-1

我在 android 中创建了一个带有下拉列表的操作栏,但问题是我想添加多个下拉列表,这些下拉列表将始终显示在操作栏中

它显示的是一个下拉菜单,但 toast 消息显示了 2 个选定项目的选择

mainActivity.java

package in.wptrafficanalyzer.actionbardropdownnavigation;

import android.app.ActionBar;
import android.app.ActionBar.OnNavigationListener;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {


    /** An array of strings to populate dropdown list */
    String[] actions = new String[] {
        "Bookmark",
        "Subscribe",
        "Share"
    };

    String[] social = new String[] {
            "facebook",
            "twitter",
            "lamelchamel"
        };



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


        /** Create an array adapter to populate dropdownlist */
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, actions);

        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, social);


        /** Enabling dropdown list navigation for the action bar */
        getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        /** Defining Navigation listener */
        ActionBar.OnNavigationListener navigationListener = new OnNavigationListener() {

            @Override
            public boolean onNavigationItemSelected(int itemPosition, long itemId) {
                Toast.makeText(getBaseContext(), "You selected : " + actions[itemPosition] + " and you selected " + social[itemPosition]  , Toast.LENGTH_SHORT).show();
                return false;
            }
        };

        /** Setting dropdown items and item navigation listener for the actionbar */
        getActionBar().setListNavigationCallbacks(adapter, navigationListener);

        getActionBar().setListNavigationCallbacks(adapter2, navigationListener);
    }
}

主要的.xml

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

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

谁能帮我解决这个问题??

4

1 回答 1

0

你为什么不创建一个菜单文件来指定项目,然后在项目中actionLayout指定你的下拉菜单或微调器,

菜单.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/one"
          android:icon="@drawable/one"
          android:showAsAction="always"
          android:title="@null"/>
    <item
        android:id="@+id/two"
        android:showAsAction="ifRoom"
        android:onClick="onGroupItemClick"
        android:actionLayout="@layout/another"  />
</menu>

另一个.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:entries="@array/order" />

在这种情况下,这是一种更严格的方法,建议使用,而不是通过代码创建数组,xml如果它们是常量数据,则只需从它们中填充它们,但如果它是动态的,那么您必须通过创建数组的代码来执行此操作。

两种方式你都应该通过 xml 方法来为你的操作栏中的菜单。

于 2013-09-24T09:21:50.393 回答