gpt4 book ai didi

java - Android:所有 Activity 的抽屉导航

转载 作者:太空狗 更新时间:2023-10-29 12:39:17 24 4
gpt4 key购买 nike

我想在我的 Android 项目的所有 Activity 中添加抽屉导航。这是 MainActivity 的代码:

public class MainActivity extends Activity {


private String[] drawerListViewItems;
private DrawerLayout drawerLayout;
private ListView drawerListView;
private ActionBarDrawerToggle actionBarDrawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// get list items from strings.xml
drawerListViewItems = getResources().getStringArray(R.array.items);


// get ListView defined in activity_main.xml
drawerListView = (ListView) findViewById(R.id.left_drawer);

// Set the adapter for the list view
drawerListView.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_listview_item, drawerListViewItems));

// App Icon
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
//drawerLayout = (DrawerLayout) findViewById(R.drawable.ic_drawer_2);

actionBarDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
);

// Set actionBarDrawerToggle as the DrawerListener
drawerLayout.setDrawerListener(actionBarDrawerToggle);

getActionBar().setDisplayHomeAsUpEnabled(true);

// just styling option add shadow the right edge of the drawer
drawerLayout.setDrawerShadow(R.drawable.ic_drawer, GravityCompat.START);

drawerListView.setOnItemClickListener(new DrawerItemClickListener());
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
actionBarDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
actionBarDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

// call ActionBarDrawerToggle.onOptionsItemSelected(), if it returns true
// then it has handled the app icon touch event
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}

private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {

displayView(position);

drawerLayout.closeDrawer(drawerListView);

}

private void displayView(int position)
{
switch (position)
{
case 0:
secondactivity();
break;


case 1:
Toast.makeText(MainActivity.this, "2", Toast.LENGTH_LONG).show();
break;

case 2:
Toast.makeText(MainActivity.this, "3", Toast.LENGTH_LONG).show();

default:
break;
}

}
}

public void secondactivity (){

Intent cambioActivity;

cambioActivity = new Intent (this, SecondActivity.class);

startActivity(cambioActivity);
}
}

在这段代码中我创建了抽屉导航,我想要所有 Activity 的抽屉导航,所以我的第二个 Activity 的代码是这样的:

public class SecondActivity extends MainActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secondactivity);

}

抽屉导航在第一个 Activity 上,但在其他 Activity 上却没有,为什么?有人可以帮助我吗?

最佳答案

最简单的方法是创建 fragment 。如果您准备好接受一些困难的事情,那么这就是给您的。它会让您在所有 Activity 中拥有相同的抽屉导航

创建drawer_n_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
android:id="@+id/drawer_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<YourDrawer
android:id="@+id/drawer_drawer"
android:layout_width="match_parent"
android:layout_height="fill_parent" >

</YourDrawer>

</RelativeLayout>

你的DrawerActivity.class

public class DrawerActivity extends Activity {

public RelativeLayout fullLayout;
public FrameLayout frameLayout;

@Override
public void setContentView(int layoutResID) {

fullLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.drawer_n_activity, null);
frameLayout = (FrameLayout) fullLayout.findViewById(R.id.drawer_frame);

getLayoutInflater().inflate(layoutResID, frameLayout, true);

super.setContentView(fullLayout);

//Your drawer content...

}
}

现在,要在您的所有 Activity 中包含相同的抽屉导航并注意一件事,您所有的 Activity 必须扩展 DrawerActivity

public class MainActivity extends DrawerActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //layout for 1st activity
}
}

public class SecondActivity extends DrawerActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity); //layout for 2nd activity
}
}

关于java - Android:所有 Activity 的抽屉导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com