Android 如何使用片段选项卡调用另一个活动?

Android 如何使用片段选项卡调用另一个活动?,android,android-fragments,android-fragmentactivity,android-listfragment,android-dialogfragment,Android,Android Fragments,Android Fragmentactivity,Android Listfragment,Android Dialogfragment,我在选项卡中使用fragment,在选项卡中使用listfragment,我想在item clicklistner上进行另一项活动,我使用以下代码: Activity activity = getActivity(); Intent i = new Intent(activity, Motherboard.class); startActivity(i); 它将转到另一个活动,但不显示选项卡栏。 如果有任何活动调用,我希望选项卡栏保持在前面。 请

我在选项卡中使用fragment,在选项卡中使用listfragment,我想在item clicklistner上进行另一项活动,我使用以下代码:

        Activity activity = getActivity();
        Intent i = new Intent(activity, Motherboard.class);
        startActivity(i);
它将转到另一个活动,但不显示选项卡栏。 如果有任何活动调用,我希望选项卡栏保持在前面。
请帮帮我。

希望这对你有帮助


要支持所有版本,您可以使用该教程中提供的Action bar sherlock库。

片段是活动的一部分。如果您移动到另一个活动,并且希望它也包含片段,则必须在其中创建片段。
或者,您可以保持在相同的活动中,只切换片段而不启动新活动

我认为您需要创建一个带有如下选项卡的BaseActivity

abstract public class BaseActivity extends FragmentActivity {

}
所有其他活动都扩展了BaseActivity

编辑

给你举个小例子

BaseActivity.java

 abstract public class BaseActivity extends Activity implements TabListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);
    ActionBar actionBar = getActionBar();
    // add tabs to actionbar
    actionBar.addTab(actionBar.newTab().setText("TAB 1")
            .setTabListener(this));
    actionBar.addTab(actionBar.newTab().setText("TAB 2")
            .setTabListener(this));

}

}
   public class FirstActivity extends BaseActivity {

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

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Toast.makeText(getApplicationContext(),
            tab.getText() + " selected in FirstActivity",
            Toast.LENGTH_SHORT).show();

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

}
    public class SecondActivity extends BaseActivity {

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

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Toast.makeText(getApplicationContext(),
            tab.getText() + " selected in SectondActivity",
            Toast.LENGTH_SHORT).show();

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

  }
FirstActivity.java

 abstract public class BaseActivity extends Activity implements TabListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);
    ActionBar actionBar = getActionBar();
    // add tabs to actionbar
    actionBar.addTab(actionBar.newTab().setText("TAB 1")
            .setTabListener(this));
    actionBar.addTab(actionBar.newTab().setText("TAB 2")
            .setTabListener(this));

}

}
   public class FirstActivity extends BaseActivity {

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

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Toast.makeText(getApplicationContext(),
            tab.getText() + " selected in FirstActivity",
            Toast.LENGTH_SHORT).show();

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

}
    public class SecondActivity extends BaseActivity {

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

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Toast.makeText(getApplicationContext(),
            tab.getText() + " selected in SectondActivity",
            Toast.LENGTH_SHORT).show();

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

  }
SecondActivity.java

 abstract public class BaseActivity extends Activity implements TabListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);
    ActionBar actionBar = getActionBar();
    // add tabs to actionbar
    actionBar.addTab(actionBar.newTab().setText("TAB 1")
            .setTabListener(this));
    actionBar.addTab(actionBar.newTab().setText("TAB 2")
            .setTabListener(this));

}

}
   public class FirstActivity extends BaseActivity {

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

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Toast.makeText(getApplicationContext(),
            tab.getText() + " selected in FirstActivity",
            Toast.LENGTH_SHORT).show();

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

}
    public class SecondActivity extends BaseActivity {

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

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Toast.makeText(getApplicationContext(),
            tab.getText() + " selected in SectondActivity",
            Toast.LENGTH_SHORT).show();

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

  }

您需要在onclick方法中添加/替换另一个片段,而不是启动另一个活动

,除非您确实想编写一个在继承自该超类的所有活动中实现选项卡栏的超类,否则您可以尝试用另一个片段替换片段。也节省了大量内存