Frahment tabhost重疊.再點擊問題

发布于 2022-09-01 21:23:19 字数 4033 浏览 8 评论 0

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

}

麻煩各位了
謝謝

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文