我可以从交换机案例中调用活动类吗?

时间:2014-12-31 14:49:42

标签: android android-layout android-intent android-activity android-fragments

我有一个代码,在其中打开五个片段类,但我有一个案例在我的项目中调用活动类。

我可以将案例3更改为调用活动类而不是片段类吗?

private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = new HomeFragment();
        break;
    case 1:
        fragment = new FindPeopleFragment();
        break;
    case 2:
        fragment = new PhotosFragment();
        break;
    case 3:
        fragment = new CommunityFragment();
        break;
    case 4:
        fragment = new PagesFragment();
        break;
    case 5:
        fragment = new WhatsHotFragment();
        break;

    default:
        break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();

        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        setTitle(navMenuTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}

2 个答案:

答案 0 :(得分:2)

如果您的问题是您是否可以致电new MyActivity(),答案是否定的。只有Android框架才能实例化Activity,并且会根据Intent调用中使用的Context.startActivity()来实现此目的。

答案 1 :(得分:1)

如果您的意思是通过呼叫开始新活动,那么小答案是肯定的,您可以这样做。

但是,如果你的意思是实例化那么;不,你做不到。

switch (position) {
case 0:
    *******WRONG WAY*******
    myAct = new MyActivity(); // Where MyActivity is extended from Activity
    break;
case 1:
    *******RIGHT WAY*******
    Intent intent=new Intent(MyCurrentActivity.this, MyNewActivity.class);
    startActivity(intent);
    break;
}