我製作了一個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); }
}
麻煩各位了
謝謝