我製作了一個Fragment可是現在有兩個問題
1.在第一頁按下按鈕跳內頁後.再點Tab第二夜時會有重疊的問題
2.我想要在Tab1按下按鈕進入內頁之後.在按下Tab1可以回到有按鈕的那頁請問應該要如何下參數呢?
附上程式碼給大家
謝謝
1.MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentTabHost tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
//1
tabHost.addTab(tabHost.newTabSpec("Apple")
.setIndicator("Apple"),
com.example.rockkung.realtabhost.Apple.class,
null);
//2
tabHost.addTab(tabHost.newTabSpec("Google")
.setIndicator("Google"),
GoogleFragment.class,
null);
//3
tabHost.addTab(tabHost.newTabSpec("Facebook")
.setIndicator("Facebook"),
FacebookFragment.class,
null);
//4
}
public String getAppleData(){
return "Apple 123";
}
public String getGoogleData(){
return "Google 456";
}
public String getFacebookData(){
return "Facebook 789";
}
@Override
protected void onSaveInstanceState(Bundle bundle) {
// Empty
}
}
2.Tab1
public class Apple extends Fragment {
private String value = "";
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
MainActivity mainActivity = (MainActivity)activity;
value = mainActivity.getAppleData();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.frg_apple, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final TextView txtResult = (TextView) this.getView().findViewById(R.id.textView1);
txtResult.setText(value);
Button btn = (Button) this.getView().findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.realtabcontent);
FragmentTransaction ft = fm.beginTransaction();
replaceFragment(new Appleinside());
ft.addToBackStack(null);
ft.commit();
}
});
}
public void replaceFragment(Fragment fragment) {
this.getFragmentManager().beginTransaction()
.replace(R.id.realtabcontent, fragment).addToBackStack(null)
.commit();
}
}
3.tab1內頁
public class Appleinside extends Fragment {
private String value = "";
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.inside, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
4.另外兩頁是一樣的就貼一頁
public class FacebookFragment extends Fragment {
private String value = "";
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
MainActivity mainActivity = (MainActivity)activity;
value = mainActivity.getFacebookData();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.frg_facebook, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
TextView txtResult = (TextView) this.getView().findViewById(R.id.textView1);
txtResult.setText(value);
}
}
麻煩各位了
謝謝