Android:返回主要活动问题

发布于 2024-12-01 17:40:27 字数 1006 浏览 3 评论 0原文

在我的主要活动中,我有一个菜单,当选择菜单选项时,会创建一个意图并启动一个新活动。当该活动完成时,该流程应根据 ​​ActivityLifeCycle 返回到主活动及其所有先前状态。

我注意到,当它返回到主要活动时,无法访问任何内容并且屏幕变暗。只有当我按下菜单软键时,我才能返回到我所期望的。

以前有人遇到过这个问题吗?如有反馈,我们将不胜感激! 代码示例如下:

@Override
protected void onResume(){          
    super.onResume();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_menu, menu);
    return true;
}    

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.menu_settings: 
        return true;            
    case R.id.menu_decks:
        Intent launchDecks = new Intent(this, stackDecks.class);
        startActivity(launchDecks);             
        return true;        
    case R.id.menu_exit:  
        this.onDestroy();
        this.finish();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}   

In my main activity I have a menu and when a menu option is selected an Intent is created and a new activity is started. When that activity completes the process should return back to the main activity and all its previous states according to the ActivityLifeCycle.

I notice that when it returns back to the main activity, nothing is accessable and the screen dims. I can only get back to what I expect when I press the menu softkey.

Has anyone experienced this issue before? Feedback would be appreciated!
Code sample below:

@Override
protected void onResume(){          
    super.onResume();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_menu, menu);
    return true;
}    

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.menu_settings: 
        return true;            
    case R.id.menu_decks:
        Intent launchDecks = new Intent(this, stackDecks.class);
        startActivity(launchDecks);             
        return true;        
    case R.id.menu_exit:  
        this.onDestroy();
        this.finish();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}   

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染火枫林 2024-12-08 17:40:27

第一篇文章中的代码实际上是正确的(我有一些非常相似的东西)。错误很有可能出现在 menu.xml res 文件中,即使它膨胀时没有任何问题。检查两个地方是否完全一致,并且有相同的项目。经过几个小时的实验,我终于解决了这个问题。

The code in the first post is actually correct(I have something very similar). There is a great chance the error is in the menu.xml res file, even though it inflates without any problems. Check it is fully consistent in both places, and has the same items. I finally solved it after hours of experimenting.

初见你 2024-12-08 17:40:27

您似乎对 super 的使用感到困惑。

super.m() 用于调用超类方法。

如果您继承该方法而不进行覆盖,则
super.m() = this.m()
看看你的 super.onDestroy

仅仅为了调用 super.m() 来重写方法 m() 是绝对没有用的
查看您的 onResume

有时调用超类方法很有用,它允许您从子类中的此代码中受益。例如,这里 onCreateMenuOptions 被重写,您的子类可以从菜单的一些初始化代码中受益。

问候,
史蒂芬

You seemed to be confused with the use of super.

super.m() is used to call a superclass method.

If you inherit the method with no override then
super.m() = this.m()
See your super.onDestroy

It s absoluetly useless to override a method m() just to call super.m()
See your onResume

Sometimes it is usefull to call a super clas method, it allows you to benefit from this code in a subclass. For instance here onCreateMenuOptions is overriden and your subclass can benefit from some imitialisation code for a menu.

Regards,
Stéphane

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文