繁体   English   中英

单击 tabhost 时更改操作栏并更改 Android 中的片段

[英]Change action bar when tabhost clicked and changes in fragment in Android

当我单击 tabhost 和片段更改之一时,如何更改活动内的操作栏?

我的代码如下。

主要活动

public class MainActivity extends ActionBarActivity {

    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bottom_tabs);

        mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

        Bundle b = new Bundle();
        b.putString("key", "Home");
        mTabHost.addTab(mTabHost.newTabSpec("home").setIndicator("Home",getResources().getDrawable(R.drawable.tab_one)),HomeFragment.class, b); 
        mTabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#D6D5D6"));
        TextView tv1 = (TextView) mTabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title); //Unselected Tabs
        tv1.setTextColor(Color.parseColor("#000000"));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

首页片段

public class HomeFragment extends Fragment {

public HomeFragment() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v = LayoutInflater.from(getActivity()).inflate(R.layout.activity_home_fragment,
                null);

return v;
    }


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
    }

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
    {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();


        //fragment specific menu creation
    }
}

这是由您的片段自动完成的。 你应该添加

setHasOptionsMenu(true);

在片段的 onCreate() 方法中。

此外,您应该使用传递给 onCreateView 的 LayoutInflater - 您不需要通过活动再次获取它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM