【问题标题】:How to implement a drop down navigation action bar in Android after you've added it?添加后如何在Android中实现下拉导航操作栏?
【发布时间】:2012-12-19 18:39:35
【问题描述】:

按照本指南,http://wptrafficanalyzer.in/blog/adding-drop-down-navigation-to-action-bar-in-android/

我能够添加我的下拉导航栏。点击事件和一切功能。现在,我该如何做到这一点,一旦选择了一个选项,它就会导航到具有自己布局和不同功能的不同屏幕。

任何帮助都会很棒,在此先感谢!

编辑:这就是我所拥有的。我的应用程序运行了大约一毫秒,我可以瞥见“Hello World”然后它崩溃了。顺便说一句,我正在使用 Sherlock,如果这很重要的话。

package com.poe.statcalc;

import com.actionbarsherlock.app.SherlockActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.OnNavigationListener;

public class MainActivity extends SherlockActivity {

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

};

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

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

    /** Enabling dropdown list navigation for the action bar */
    getSupportActionBar().setNavigationMode(com.actionbarsherlock.app.ActionBar.NAVIGATION_MODE_LIST);

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

        @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
            switch(itemPosition) {
            case 0:
                Intent i = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(i);
                break;
            case 1:
                //...
                break;
            }
            return false;
        }
    };

    /** Setting dropdown items and item navigation listener for the actionbar */
    getSupportActionBar().setListNavigationCallbacks(adapter, navigationListener);
    adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);

}

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    getSupportMenuInflater().inflate(R.menu.activity_main, menu);
    return super.onCreateOptionsMenu(menu);
}

}

【问题讨论】:

  • 你的意思是开始一个新的活动/Java类?

标签: android drop-down-menu navigation android-actionbar


【解决方案1】:

如果你想改变元素,你需要操纵你的ArrayAdapter,但我认为你不能使用ArrayAdapter&lt;String&gt; 类来处理那个多孔。您可能需要使用字符串以外的其他内容。

要处理点击,您需要更改 onNavigationItemSelected 函数:

@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    switch(itemPosition) {
    case 0:
        Intent i = new Intent(this, SecondActivity.class);
        startActivity(i);
        break;
    case 1:
        // ...
        break;
    }
    return false;
}

【讨论】:

  • 我试了一下代码,但它崩溃了。你认为你可以检查出什么问题吗?
  • 您注意到了吗:您必须使用 Theme.Sherlock、Theme.Sherlock.Light、Theme.Sherlock.Light.DarkActionBar 或衍生产品。另请参阅 ActionBarSherlock 主页如何设置。
【解决方案2】:

你必须通过在onNavigationItemSelected回调中调用startActivity(Intent)来启动一个新的Activity。

【讨论】:

    【解决方案3】:

    不知道这是否是您遇到的确切问题(尽管听起来很像!),但请注意使用微调器中的 startActivity:它可以在 onCreate() 期间调用。

    onNavigationItemSelected in ActionBar is being called at startup how can avoid it?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多