操作按钮/操作栏未显示在TabHost方法中

时间:2014-08-16 19:18:40

标签: android android-actionbar

我正在尝试为项目中的每个新标签(活动)设置不同的操作栏

我创建了我的第一个Activity并将其作为主要活动中的标签

我的第一个活动(标签)在其活动的操作栏中有操作按钮(开始)

此选项卡的操作栏中没有显示任何内容 如果是这样,我会放更多活动(标签),不会显示任何操作栏/按钮

我的logcat没有错误

这是我的代码:

AndroidTabLayoutActivity.java

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class AndroidTabLayoutActivity extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost tabHost = getTabHost();

        // Tab for activity1
        TabSpec activity1 = tabHost.newTabSpec("Photos");
        activity1.setIndicator("Photos", getResources().getDrawable(R.drawable.icon_photos_tab));
        Intent photosIntent = new Intent(this, OneActivity.class);
        activity1.setContent(photosIntent);

        tabHost.addTab(activity1); // Adding photos tab
    }

}

OneActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class OneActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.photos_layout);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity1_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        // Take appropriate action for each action item click
        switch (item.getItemId()) {
            case R.id.action_start:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="b3du.im.tabLayout.AndroidTabLayoutActivity">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>
    </LinearLayout>
</TabHost>

photos_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <!-- Screen Design for Activity1 -->

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="im the first one "
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

activity1_actions.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >


    <!-- Exit -->
    <item android:id="@+id/action_start"
        android:title="Start"
        android:showAsAction="withText|always" />


</menu>

1 个答案:

答案 0 :(得分:1)

您需要在主要活动(托管标签的位置)中添加操作按钮,而不是在标签活动中。 然后使用

在标签活动中管理它们
 getParent().getActionBar()

还有..

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