结合菜单和Tab [英] Combining Menu and Tab

查看:221
本文介绍了结合菜单和Tab的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用这标签的布局和ListView从的 http://www.androidhive.info/2012/05/android-combining-tab-layout-and-list-view/ 和Android的菜单,从的 http://www.androidhive.info/2011/09/how-to-create-android-菜单/
我把它们合并在一起,但它不工作。的标签工作,但不为菜单。
这里是我的codeS。

I am using this "Tab layout and Listview" from http://www.androidhive.info/2012/05/android-combining-tab-layout-and-list-view/ and "Android Menus" from http://www.androidhive.info/2011/09/how-to-create-android-menus/. I merge them together, yet it doesn't work. The tab works, but not for the menu. Here are my codes.

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class optionMenuActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    // Initiating Menu XML file (menu.xml)
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.layout.menu, menu);
        return true;
    }

    /**
     * Event Handling for Individual menu item selected
     * Identify single menu item by it's id
     * */
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        Intent myList = new Intent();
        switch (item.getItemId())
        {
        case R.id.menu_login:
            // Single menu item is selected do something
            // Ex: launching new activity/screen or show alert message
         //   Toast.makeText(optionMenuActivity.this, "Bookmark is Selected", Toast.LENGTH_SHORT).show();
            myList = new Intent(optionMenuActivity.this, LoginActivity.class);
            startActivity(myList);
            return true;

        case R.id.menu_save:
            Toast.makeText(optionMenuActivity.this, "Save is Selected", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.menu_search:
            Toast.makeText(optionMenuActivity.this, "Search is Selected", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.menu_share:
            Toast.makeText(optionMenuActivity.this, "Share is Selected", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.menu_delete:
            Toast.makeText(optionMenuActivity.this, "Delete is Selected", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.menu_quit:
         //   Toast.makeText(optionMenuActivity.this, "Preferences is Selected", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
           // return true;

        default:
            return super.onOptionsItemSelected(item);
        }
    }   

}

从标签布局

<?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">
    <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>

这是我menu.xml文件

And this is my menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Single menu item
         Set id, icon and Title for each menu item
    -->
    <item android:id="@+id/menu_login"
          android:icon="@drawable/icon_bookmark"
          android:title="Login" />

    <item android:id="@+id/menu_save"
          android:icon="@drawable/icon_save"
          android:title="Save" />

    <item android:id="@+id/menu_search"
          android:icon="@drawable/icon_search"
          android:title="Search" />

    <item android:id="@+id/menu_share"
          android:icon="@drawable/icon_share"
          android:title="Share" />

    <item android:id="@+id/menu_delete"
          android:icon="@drawable/icon_delete"
          android:title="Delete" /> 

    <item android:id="@+id/menu_quit"
          android:icon="@drawable/icon_preferences"
          android:title="Quit" />
</menu>

最后,我的清单。

And lastly, my manifest.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.example"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".WorkDroid5"
            android:configChanges="keyboardHidden|orientation"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Inbox Activity -->
        <activity android:name=".AnnouncementActivity" />

        <!-- Outbox Activity -->
        <activity android:name=".HomeworkActivity" />

        <!-- Profile Activity -->
        <activity android:name=".TimetableActivity" />
        <activity android:name=".tt_Friday" />
        <activity android:name=".ttFinalDetails" />
        <activity android:name=".TimetableAdapter" />
        <activity android:name=".tt_Thursday" />
        <activity android:name=".tt_Monday" />
        <activity android:name=".tt_Tuesday" />
        <activity android:name=".tt_Wednesday" />
        <activity
            android:name=".RegisterActivity"
            android:label="Register New Account" >
        </activity>
        <activity
            android:name=".LoginActivity"
            android:label="Login to your Account" >
        </activity>


        <activity
            android:name=".optionMenuActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.example.example.OPTIONMENUACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>


    </application>

    <!-- Internet Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />

</manifest>

在此先感谢任何人的帮助(

Thanks in advance for anyone's help (':

推荐答案

我跑进与TabHost类似的问题。默认情况下,Android的创建你的情况父活动选项菜单,即TabHost。子选项卡未收到 OnCreateOptionsMenu 事件。因此,不创建您的菜单。

I ran into similar problem with TabHost. By default, Android creates an options menu for the parent activity, i.e. TabHost in your case. The child tab does not receive the OnCreateOptionsMenu event. Therefore, your menu is not being created.

把选项菜单中创建/处理code延长TabActivity活动。您可以通过检查哪个选项卡目前通过检查选定 getTabHost.getCurrentTab getTabHost.getCurrentTabTag 和充气相应的菜单。

Put the option menu creation/handling code in the activity extending TabActivity. You can change the preference menu content by checking which tab is currently selected by checking getTabHost.getCurrentTab or getTabHost.getCurrentTabTag and inflating appropriate menu.

这篇关于结合菜单和Tab的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆