Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Actionbar中断了应用程序_Android_Android Actionbar - Fatal编程技术网

Android Actionbar中断了应用程序

Android Actionbar中断了应用程序,android,android-actionbar,Android,Android Actionbar,我已经花了几个小时来弄清楚为什么我的应用程序在加载时没有出现错误消息就崩溃了 基本上,当我通过USB或emulator运行它时,屏幕大约每半秒刷新一次。查看日志,它似乎在循环中运行onCreate。我不明白为什么!最终,会出现一堆“通道已无法恢复并将被处理”的消息。这条信息也出现了很多: 07-15 13:59:22.334:错误/AbstractCompatWrapper381:AbstractCompatWrapper的输入无效 07-15 13:59:22.334:错误/兼容LS381:调

我已经花了几个小时来弄清楚为什么我的应用程序在加载时没有出现错误消息就崩溃了

基本上,当我通过USB或emulator运行它时,屏幕大约每半秒刷新一次。查看日志,它似乎在循环中运行onCreate。我不明白为什么!最终,会出现一堆“通道已无法恢复并将被处理”的消息。这条信息也出现了很多:

07-15 13:59:22.334:错误/AbstractCompatWrapper381:AbstractCompatWrapper的输入无效 07-15 13:59:22.334:错误/兼容LS381:调用中的异常:NullPointerException

如果你愿意,我可以发布一个完整的日志,但是我在那里找不到任何有用的东西

最后,我发现删除对“fillActionBar”的调用(一种实例化操作栏的方法)可以“修复”问题。但是,我想能够使用的行动吧!我做错了什么

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    resultBox = (TextView) findViewById(R.id.readout_values);

    // commenting out the following line fixes the problem, 
    // but removes the action bar.
    this.actionBar = fillActionBar(); 

    try {
        specialHttpClient = new SpecialHttpClient(
                "username", "password");
    } catch (Exception e) {
        Dbg.loge(this.getClass().getName(), "Could not instantiate client", e);
    }
}

private ActionBar fillActionBar() {
    ActionBar bar = getActionBar();// getSupportActionBar();
    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(
            this,
            android.R.layout.simple_spinner_dropdown_item,
            //R.layout.sherlock_spinner_item,
            pages
    );
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    ActionBar.OnNavigationListener navListener = new ActionBar.OnNavigationListener() {
        @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
            Intent i = null;
            switch(itemPosition) {
                case 0:
                    i = new Intent(context, RecorderActivity.class);
                    break;
                case 1:
                    i = new Intent(context, TrackerActivity.class);
                    break;
            }
            startActivity(i);
            return true;
        }
    };
    bar.setListNavigationCallbacks(spinnerAdapter, navListener);
    return bar;
}
**编辑**


问题似乎是,即使没有按下任何按钮,startActivityi也会被调用。将调用移动到第二个菜单项似乎只能解决问题-但为什么会发生这种情况?

正如有时发生的情况一样,压缩问题以便发布的过程有助于找到答案

问题是,出于我不理解的原因,ActionBar菜单中的第一项在创建时被调用——因此活动一直在自己调用startActivity

将switch语句调整为以下值将停止错误:

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

我会将正确答案奖励给任何能解释原因的人

你为什么不一步一步地看一看它在哪里断了呢?你知道,直到你的评论,我才意识到实际上可以一步一步地看一看在单独设备上执行的实时Android代码。太棒了!以前,哪个活动被一次又一次地调用?列表中的第一个,在itemPosition=0处,这也是启动活动