Android 在活动之间切换->;无限循环
我是android新手,有一个“小”问题 我正在开始扩展基类的主要活动。 基类启动我的“导航”类。。。在导航类中,我有一个开关参数要选择,应该创建哪个活动-好吧,现在我有一个无限循环,我不知道为什么 当我使用片段时,它工作得很好,但我想使用活动。。。希望有人能帮我:) 这是我的密码Android 在活动之间切换->;无限循环,android,Android,我是android新手,有一个“小”问题 我正在开始扩展基类的主要活动。 基类启动我的“导航”类。。。在导航类中,我有一个开关参数要选择,应该创建哪个活动-好吧,现在我有一个无限循环,我不知道为什么 当我使用片段时,它工作得很好,但我想使用活动。。。希望有人能帮我:) 这是我的密码 public class MainActivity extends Base { @Override protected void onCreate(Bundle savedInstanceState) {
public class MainActivity extends Base {
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.v("boot", "MainActivity-onCreate");
super.onCreate(savedInstanceState);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, new MainFragment())
.commit();
}
基地
航行
public class NavigationDrawer extends Fragment {
private ActionBarDrawerToggle mDrawerToggle;
private NavigationDrawerCallback mCallbacks;
private DrawerLayout mDrawerLayout;
private ListView mDrawerListView;
private View mFragmentContainer;
private boolean mUserLearnedNavigation;
private static final String PREF_USER_LEARNED_NAVI = "navigation_learned";
private static final String STATE_SELECTED_POSITION = "selected_position";
private int mCurrentSelectedPosition;
private boolean mFromSavedInstanceState;
@Override
public void onCreate(Bundle savedInstanceState) {
Log.v("boot", "Nav - onCreate");
super.onCreate(savedInstanceState);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
mUserLearnedNavigation = sp.getBoolean(PREF_USER_LEARNED_NAVI, false);
if (savedInstanceState != null) {
mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
mFromSavedInstanceState = true;
}
selectItem(mCurrentSelectedPosition);
} ...
private void selectItem(int position) {
Log.v("boot", "Nav - selectitem");
mCurrentSelectedPosition = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainer);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemClicked(position);
}
switch (position) {
case 0:
startActivity(new Intent(getActivity(), MainActivity.class));
break;
case 1:
startActivity(new Intent(getActivity(), ExpensesActivity.class));
break;
default:
startActivity(new Intent(getActivity(), MainActivity.class));
break;
}
}
每次启动活动时,都会重新创建菜单,从而执行切换案例。您不应该在菜单的onCreate中调用selectItem。如果要保持用户导航,必须在MainActivity中启动适当的活动 在调用startActivity之前,可以添加一个检查,查看getActivity是否是要启动的活动的实例,这样就不会再次在无限循环中运行 谢谢!;)但我如何处理我的“问题”。我希望使用多个活动,而不是一个包含多个片段的活动。因此,我想使用实现导航的“基类”。如果getActivity是一个实例,我该如何查看?Sry我是java/android新手:>我是“php开发人员”^^
public class NavigationDrawer extends Fragment {
private ActionBarDrawerToggle mDrawerToggle;
private NavigationDrawerCallback mCallbacks;
private DrawerLayout mDrawerLayout;
private ListView mDrawerListView;
private View mFragmentContainer;
private boolean mUserLearnedNavigation;
private static final String PREF_USER_LEARNED_NAVI = "navigation_learned";
private static final String STATE_SELECTED_POSITION = "selected_position";
private int mCurrentSelectedPosition;
private boolean mFromSavedInstanceState;
@Override
public void onCreate(Bundle savedInstanceState) {
Log.v("boot", "Nav - onCreate");
super.onCreate(savedInstanceState);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
mUserLearnedNavigation = sp.getBoolean(PREF_USER_LEARNED_NAVI, false);
if (savedInstanceState != null) {
mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
mFromSavedInstanceState = true;
}
selectItem(mCurrentSelectedPosition);
} ...
private void selectItem(int position) {
Log.v("boot", "Nav - selectitem");
mCurrentSelectedPosition = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainer);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemClicked(position);
}
switch (position) {
case 0:
startActivity(new Intent(getActivity(), MainActivity.class));
break;
case 1:
startActivity(new Intent(getActivity(), ExpensesActivity.class));
break;
default:
startActivity(new Intent(getActivity(), MainActivity.class));
break;
}
}