[英]Data lost due to orientation change when calling start activity for result
如果我不清楚,请询问您的查询内容是否带有负号。 我是新用户
我制作了一个问题解答应用程序,在回答所有问题后它将进入完成页面。 三个位置是三个按钮,它们指示您是对还是错。
您可以通过单击按钮1,2或3回答问题,该按钮将发送相应的问题编号。
我的问题。
我使用startActivityForResult
函数从问题类转到完成类,并返回一些数据,然后调用onActivityResult
函数并成功运行。 但是,如果问题类和完成类的方向不同,则在单击问题按钮后,它不会调用onActivityResult
函数,它将重新启动问题类。
这是问题类的代码。 我在哪里使用startactivityforresult
:
Intent intent=new Intent (question.this,finish.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("question1",correct[1]);
intent.putExtra("question2",correct[2])
intent.putExtra("question3",correct[3]);
startActivityForResult(intent, REQUEST);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST && resultCode == Activity.RESULT_OK) {
latitude = data.getIntExtra("latitude", 0)
requstquestion(latitude);
}}
这是完成类的代码:
Intent mintent = getIntent(); //recive the correct array
accuracy[1] = mintent.getIntExtra("question1",0);
accuracy[2] = mintent.getIntExtra("question2",0);
accuracy[3] = mintent.getIntExtra("question3",0);
question1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(Activity.RESULT_OK,
new Intent().putExtra("latitude", 0));
finish();
// TODO Auto-generated method stub
}
});
question2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(Activity.RESULT_OK,
new Intent().putExtra("latitude", 1));
finish();
// TODO Auto-generated method stub
}
});
question3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setResult(Activity.RESULT_OK,
new Intent().putExtra("latitude", 2));
finish();
// TODO Auto-generated method stub
}
});
在清单中将configChanges添加到活动中以进行定向。
列出活动将自行处理的配置更改。 在运行时发生配置更改时,默认情况下将关闭活动并重新启动活动,但是使用此属性声明配置将阻止活动重新启动
<activity
android:name=".YourActivity"
android:label="@string/title_activity_android_basics_starter"
android:configChanges="keyboard|keyboardHidden|orientation">
在应用程序清单中,您是否还记得说过“ Question
活动是“ Finish
活动的父级? 这样的事情,例如:
<activity android:name=".FinishActivity"
android:parentActivityName=".QuestionActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".QuestionActivity"/>
</activity>
因为如果这样做,则即使在FinishActivity
调用finish()
时屏幕方向不同,也应在QuestionActivity
调用onActivityResult()
。 我自己遇到类似问题时,是通过反复试验发现的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.