MainActivity包含按钮。 点击按钮将转到活动2。 活动2具有提交到第3活动的按钮。 第3个活动已完成按钮,应该将我带到MainActivity并显示从2和3获取的数据。活动3不应该回到活动2。
我的方法: -
从Mainactivity盯着Activity2
def tags(request, slug):
context = {}
tags = Tags().tag_filer_sites(slug.replace('-', ' '))
context['slug'] = slug
context['full_name'] = Tag.objects.filter(slug=slug)
context['tags'] = tags['sites']
return render(request, 'mainapp/all_tags.html', context)
从活动2开始,我再次启动Activity3并传递数据
Intent activity2Intent= new Intent(MainActivity.this, activity2.class);
startActivityForResult(activity2Intent, INTENT_COUNTRY_REQUEST);
在活动3中,我使用从活动到相关数据的值,然后提交完成,将所有这些数据包发送到MainActivity。
`Intent Activity3Intent = new Intent(this, Activity3.class);
Activity3.putExtra("Position", mPosition);
Activity3.putExtra("CName", mCName);
Activity3Intent .setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(Activity3Intent);`
主要活动有onActivityResult方法来检查数据,但它永远不会被提取。
有人可以建议我如何将数据发送回MainActivity.navigateUpTo将我带到MainActivity,但数据永远不会传递。
提前致谢。 任何帮助表示赞赏
答案 0 :(得分:0)
修改强>
尝试
创建和扩展基类android.app.Application
类并在其中定义全局变量,然后您可以在应用程序上下文中获取或设置值。
public class Globalvar extends Application {
private String mSName;
public String getSmSName() {
return mSName;
}
public void setmSName(String mSName) {
this.mSName = mSName;
}
}
在你的Android清单中,你必须声明实现android.app.Application
的类<application
android:name=".Globalvar"
android:icon="@drawable/icon"
android:label="@string/app_name">
然后获取或设置
// set
((MyApplication) this.getApplication()).setmSName("foo");
// get
String s = ((MyApplication) this.getApplication()).getmSName();
上一个答案
在MainActivity
中,在onCreate()
方法中,您必须检索Bundle(包含调用活动发送的所有数据)
Bundle bundle = getIntent().getExtras();
String sname = bundle.getString("SName");
String cname = bundle.getString("CNme");
答案 1 :(得分:0)
您的onActivityResult永远不会从第3个活动中调用,因为您正在使用Intent activity2Intent= new Intent(MainActivity.this, activity2.class);
startActivity(activity2Intent);
启动第2个活动,并且您正试图绕过第2个活动。
请尝试以下代码来解决问题。
<强> MainActivity.java 强>
Intent Activity3Intent = new Intent(this, Activity3.class);
Activity3.putExtra("Position", mPosition);
Activity3.putExtra("CName", mCName);
Activity3Intent .setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(Activity3Intent);
<强> activity2.java 强>
Intent goMainActivity = new Intent(this,MainActivity.class);
goMainActivity .putExtra("callingFrom", activity3);
goMainActivity .putExtra("SName", mSName);
goMainActivity .putExtra("CNme", mCName);
startActivity(goMainActivity);
ActivityCompat.finishAffinity(this);
这是您的主要任务
<强> activity3.java 强>
MainActivity
现在您只需要检查onCreate()
的{{1}}
String callingFrom = bundle.getString("callingFrom");
if(callingFrom.equalsIgnoreCase("activity3"))
{
// now get your othere parameters and do your work with them.
}
答案 2 :(得分:0)
有多种方法可以实现这个目标
在Manifest文件中使用活动android:launchMode=""
,您可以按意图获取数据不要使用startActivityForResult
这只会在从一个活动反向按下时运行
两次使用SharedPreferences
保存每个活动
三个结合android:launchMode
和SharedPreferences
而不使用意图数据
答案 3 :(得分:0)
尝试此解决方案。
<强> MainActivity.java 强>
$(this).val('') with document.getElementById('silo').value('');
打开Activity3完成Activity2并使用“startActivityForResult”启动Activity3时activity2.java
Intent activity2Intent= new Intent(MainActivity.this, activity2.class);
startActivityForResult(activity2Intent, INTENT_COUNTRY_REQUEST);
activity3.java 返回结果,此结果将转到MainActivity的OnActivityResult(),不要启动新的MainActivity。
Intent Activity3Intent = new Intent(this, Activity3.class);
Activity3.putExtra("Position", mPosition);
Activity3.putExtra("CName", mCName);
startActivityForResult(activity2Intent, INTENT_COUNTRY_REQUEST);
finish();
现在,您将在Intent resultIntent = new Intent();
resultIntent.putExtra("SName", mSName);
resultIntent.putExtra("CNme", mCName);
setResult(RESULT_OK, resultIntent);
finish();
的{{1}}
MainActivity