Java 相同的片段出现在所有选项卡中
我在Android应用程序中遇到了一个问题。当我添加两个选项卡时,我还有两个片段。但问题是相同的片段出现在两个选项卡上。另一个片段没有出现。这是它的样子 以下是我的活动代码:Java 相同的片段出现在所有选项卡中,java,android,android-fragments,Java,Android,Android Fragments,我在Android应用程序中遇到了一个问题。当我添加两个选项卡时,我还有两个片段。但问题是相同的片段出现在两个选项卡上。另一个片段没有出现。这是它的样子 以下是我的活动代码: public class DatabaseFiller extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); StrictMode.ThreadPol
public class DatabaseFiller extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.rmactivity);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setSubtitle("Created by Rohit Nandakumar");
/*ActionBar.Tab searchdb = actionBar.newTab().setText("Search Database");
ActionBar.Tab searchlist = actionBar.newTab().setText("Show List"); */
ActionBar.Tab Frag1 = actionBar.newTab().setText("Search Database");
ActionBar.Tab Frag2 = actionBar.newTab().setText("Show List");
Fragment fragment1 = new DatabaseFillerFragment();
Fragment fragment2 = new DeleteDBItems();
Frag1.setTabListener(new MyTabListener(fragment1));
Frag2.setTabListener(new MyTabListener(fragment2));
actionBar.addTab(Frag1);
actionBar.addTab(Frag2);
}
}
以下是我的MyTabListener课程:
package com.example.foodsaver2;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentTransaction;
public class MyTabListener implements TabListener {
public Fragment fragment;
public MyTabListener(Fragment fragment) {
this.fragment = fragment;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
if (fragment == null) {
// If not, instantiate and add it to the activity
ft.add(android.R.id.content, fragment);
} else {
// If it exists, simply attach it in order to show it
ft.attach(fragment);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
if (fragment != null) {
// Detach the fragment, because another one is being attached
ft.detach(fragment);
}
}
}
我做错了什么?对此问题的任何帮助都将不胜感激。您需要调用FragmentTransaction上的提交方法来触发事务的发生。初始化侦听器,分离片段并提交它 在选中的选项卡上,只需添加片段即可 请参阅以下修订的代码以获取帮助-
public MyTabListener(Activity activity, String tag, Class<T> cls, Bundle args) {
mActivity = activity;
mTag = tag;
mClass = cls;
mArgs = args;
fragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
if (fragment != null) {
FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
ft.detach(fragment);
ft.commit();
}
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
fragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
ft.add(android.R.id.content, fragment , mTag);
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (fragment != null) {
ft.detach(fragment);
}
}
publicMyTableListener(活动、字符串标记、类cls、捆绑参数){
活动性=活动性;
mTag=标签;
mClass=cls;
mArgs=args;
fragment=mActivity.getFragmentManager().findFragmentByTag(mTag);
if(片段!=null){
FragmentTransaction ft=MacActivity.getFragmentManager().beginTransaction();
ft.分离(碎片);
ft.commit();
}
}
已选择的公共事务(选项卡,碎片事务ft){
fragment=fragment.instantiate(mActivity,mClass.getName(),mArgs);
ft.add(android.R.id.content、fragment、mTag);
}
已选择公共空页(选项卡,碎片事务ft){
if(片段!=null){
ft.分离(碎片);
}
}
这只会使应用程序崩溃。我将ft.commit()添加到所有方法中。