我有一个问题关于start活动(意图)和onStop。Android API建议在onStop中保存数据,这就是我在这里所做的:
public void onStop(){
super.onStop();
if(tosave)
{
Editor editor = sp.edit();
editor.putInt(getString(R.string.index_of_text_color), text_color_index);
editor.putInt(getString(R.string.index_of_background_color), background_color_index);
editor.commit();
}
}
但是,我想在保存下一个活动后启动它-因此我需要使用intent和startActivity(intent)。
public void click(View v){
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
我的问题是,带两个标志的startActivity(intent)是在完成应用程序时调用onStop()方法,还是需要调用finish()?是否允许我在开始新活动后调用finish()?或者,是因为新的活动将在顶部,Android会自动调用onStop,就像现在在后台一样?
关于startActivity(intent)如何在应用程序周期中发挥作用,有很多问题我都不明白。如果有人给我指一个链接,这会很有帮助。
非常感谢。
编辑:意图不在onStop中。它在另一种方法中对应于一个按钮。一旦按钮被点击,我将需要保存数据-转到onstock-然后转到下一个活动。我怎么能那样做?
您应该将状态保存在onPause()
,而不是onStop()
,因为在某些条件下,将永远不会调用onStop()
。我们保证将调用onPause()
。
onPause()
当另一个活动显示在您的活动前面时,它将始终被调用。
那应该能解决你的问题。
我试图在选项菜单中从主菜单调用另一个活动。当我从自己的选项菜单中调用主活动时,它将正常工作,但调用另一个意图将产生异常,应用程序将崩溃。我使用了try and catch,发现当它到达这条线时会崩溃: 下面是我的主java文件和应用程序清单文件。 } 对于manirfest: Logcat:
在启动activity中找不到合适的方法是显示错误的错误是: 错误:(123,17)错误:找不到适合startActivities(Intent)方法上下文的方法。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法上下文。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法
下面是我的代码位。 日志附在下面。 2021-05-12 13:40:27.167 6451-6451/Testpackage E/AndroidRuntime:致命异常:主进程:Testpackage,PID:6451 android。所容纳之物ActivityNotFoundException:未找到可处理Intent{act=android.Intent.action.VIEW dat的活动
我的代码如下: 首先,我想知道第20行: 我有两个问题: A.为什么MY_MESSAGE被分配给com.example.myfirstapp.MESSAGE?B.com.example.myfirstapp.MESSAGE是什么?c.我从来没有在任何地方做过MESSAGE;这是像r.java文件中的变量一样自动制作的,还是我需要在某个地方制作它? 第二,关于第40行:intent.putExtra
我相信有一些显而易见的事情,但还没有找到解决这个简单问题的办法。当用户猜测正确答案时,错误出现在试图启动另一个活动的主活动中: 错误:(85,23)未解析的引用:意图 该代码来自《Android静态编程语言开发》一书中的高/低Android应用程序。 清单对被调用的活动具有以下意图筛选器:
根据Android文档,finish()的功能与“后退”按钮的功能完全相同。基本上,当我调用finish()时,会调用onStop()。 我试图重写onStateSaveInstance()以保存当前状态,但从未调用它。但是,如果通过创建新的Intent并使用startActivity()转到上一个活动,则会调用onStateSaveInstance()方法。这有什么原因吗?