Frahment tabhost重疊.再點擊問題

我製作了一個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);
}

}

麻煩各位了
謝謝

阅读 1.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题