android动作栏onNavigationItemSelected

max*_*ver 12 android android-actionbar

我正在为android 3+开发

在我的操作栏中,我有一个下拉列表(请参阅如何隐藏/取消隐藏Android 3上的操作栏列表?我想要的下拉列表).问题是我需要在用户选择某些内容时执行某个操作,但Android在绘制视图时调用onNavigationItemSelected()作为soons,因此实际上没有选择.

我如何检测用户是否真的按下了某些内容并且它不是来自android的假电话?

public class ListDittaListener implements OnNavigationListener{

    private BaseActivity activity;

    private ListDittaListener()
    {

    }

    public ListDittaListener(BaseActivity activity)
    {
        this.activity = activity;
    }

    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId)
    {
        MyApp appState = ((MyApp)this.activity.getApplicationContext());
        appState.setDittaSelezionata( (int) itemId);

        SharedPreferences settings = this.activity.getSharedPreferences(MyApp.PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putInt("ditta_id_selezionata", (int) itemId);

            ////////restart activity this.activity.recreate();

        return false;
    }

}
Run Code Online (Sandbox Code Playgroud)

mlc*_*mlc 16

onNavigationItemSelected如果您愿意,您可以轻松忽略第一个电话:

public class Whatever implements OnNavigationListener {
    private boolean synthetic = true;

    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        if (synthetic) {
            synthetic = false;
            return true;
        }

        // do whatever you really wanted here 
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题,以这种方式破解它是非常烦人的.这种行为有目的吗? (3认同)