如何从导航抽屉列表中打开片段
how to open fragment from navigation drawer list
我在打开片段活动时遇到问题,我是 android 设备编程的新手,但我认为这很有趣,我想为自己制作一些应用程序。
我有一个带有滑动菜单的示例,一切正常,所以我有三个列表项(主页、设置、关于)我想在按下其中一个时打开一个 activity 这是我的 mainActivity,它如果有人告诉我应该如何完成此代码才能打开其他活动,那就太好了。
提前谢谢你。
我的 MainActivity 是:
public class MainActivity extends BaseActivity {
FragmentStackManager fm, sliding_menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpView();
menuToggeleSetUp(savedInstanceState);
}
void setUpView() {
fm = new FragmentStackManager(this);
sliding_menu = new FragmentStackManager(this);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
fm.addFragment(new MainFragment(), R.id.main_frame, false, FragmentTransaction.TRANSIT_NONE, false);
sliding_menu.addFragment(new SlidingMenuFragment(), R.id.slide_fragment, false, FragmentTransaction.TRANSIT_NONE, false);
}
void menuToggeleSetUp(Bundle savedInstanceState) {
mDrawerToggle = new ActionBarDrawerToggle(this, drawer,
R.drawable.ic_drawer, // nav menu toggle icon
R.string.app_name
) {
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu();
}
};
drawer.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
if (id == R.id.action_settings) {
System.out.println("CLEAR SETTINGS STARTED");
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
谢谢你的帮助
但是我想保留这个,因为汉堡包动画所以我发现了一些我完成了我的代码但在 logcat 上出错的东西
如果有人应该帮助我,那就太好了
所以我所做的是:
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
updateDisplay(position);
}
}
private void updateDisplay(int position) {
Fragment fragment = null;
switch (position) {
case 0:
System.out.println("ACTIVITY ONE");
//fragment = new Home_Fragment();
break;
case 1:
//fragment = new Settings_Fragment();
System.out.println("ACTIVITY TWO");
// startActivity(new Intent(this, Preferences.class));
break;
//case 2:
// fragment = new TB_Fragment();
//break;
default:
break;
}
if (fragment != null) {
android.app.FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
//setTitle(menutitles[position]);
drawer.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
我的 logcat 是
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.intelligent_screen/com.intelligent.screen.View.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setOnItemClickListener(android.widget.AdapterView$OnItemClickListener)' on a null object reference
抽屉式导航使用此示例
https://developer.android.com/training/implementing-navigation/nav-drawer.html
这显示了如何打开片段每个导航项点击
打开新的 activity 使用这个
Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
finish();
startActivity(intent);
我在打开片段活动时遇到问题,我是 android 设备编程的新手,但我认为这很有趣,我想为自己制作一些应用程序。
我有一个带有滑动菜单的示例,一切正常,所以我有三个列表项(主页、设置、关于)我想在按下其中一个时打开一个 activity 这是我的 mainActivity,它如果有人告诉我应该如何完成此代码才能打开其他活动,那就太好了。
提前谢谢你。
我的 MainActivity 是:
public class MainActivity extends BaseActivity {
FragmentStackManager fm, sliding_menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpView();
menuToggeleSetUp(savedInstanceState);
}
void setUpView() {
fm = new FragmentStackManager(this);
sliding_menu = new FragmentStackManager(this);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
fm.addFragment(new MainFragment(), R.id.main_frame, false, FragmentTransaction.TRANSIT_NONE, false);
sliding_menu.addFragment(new SlidingMenuFragment(), R.id.slide_fragment, false, FragmentTransaction.TRANSIT_NONE, false);
}
void menuToggeleSetUp(Bundle savedInstanceState) {
mDrawerToggle = new ActionBarDrawerToggle(this, drawer,
R.drawable.ic_drawer, // nav menu toggle icon
R.string.app_name
) {
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu();
}
};
drawer.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
if (id == R.id.action_settings) {
System.out.println("CLEAR SETTINGS STARTED");
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
谢谢你的帮助 但是我想保留这个,因为汉堡包动画所以我发现了一些我完成了我的代码但在 logcat 上出错的东西 如果有人应该帮助我,那就太好了 所以我所做的是:
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
updateDisplay(position);
}
}
private void updateDisplay(int position) {
Fragment fragment = null;
switch (position) {
case 0:
System.out.println("ACTIVITY ONE");
//fragment = new Home_Fragment();
break;
case 1:
//fragment = new Settings_Fragment();
System.out.println("ACTIVITY TWO");
// startActivity(new Intent(this, Preferences.class));
break;
//case 2:
// fragment = new TB_Fragment();
//break;
default:
break;
}
if (fragment != null) {
android.app.FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
//setTitle(menutitles[position]);
drawer.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
我的 logcat 是
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.intelligent_screen/com.intelligent.screen.View.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setOnItemClickListener(android.widget.AdapterView$OnItemClickListener)' on a null object reference
抽屉式导航使用此示例 https://developer.android.com/training/implementing-navigation/nav-drawer.html 这显示了如何打开片段每个导航项点击
打开新的 activity 使用这个
Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
finish();
startActivity(intent);