我正在准备 2 个应用程序,将其命名为 App-1 和 App-2,使用 App-1 我从 StartActivityForResult() 调用 App-2 的 MainActivity。直到它工作正常,我才能调用 App-2 MainActivity。现在计算 App-2 在内部调用 App-2 的 SecondActivity。所以此时应用程序开始崩溃。无需等待 SecondActivity 的内部响应,MainActivity 就会以 resultCode=0 和 null 的数据隐式响应我们的 App-1(我什至没有调用 setResult())。
而且我不能直接从 MainActivity 响应,强制我需要从 app-2 使用 SecondActivity,然后返回 App-2 MainActivity 并响应 App-1。
帮我解决这个问题。(因为我的 App-2 是 App-1 中包含的 .aar 库,所以我无法对其进行调试)。下面是它的代码。
MainActivity.java - App2
public static int flag = 0;
public static String dst = "Location - 23.029744, 72.541593";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if(flag == 0)
{
Intent in = new Intent(this,SecondActivity.class);
startActivity(in);
}
}
@Override
protected void onResume() {
super.onResume();
if(flag != 0)
{
Intent inr = new Intent();
inr.putExtra("latitude", dst);
setResult(2, inr);
flag = 0;
finish();
}
}
SecondActivity - App2
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
//Invoked by button click
public void btn_click(View v)
{
MainActivity.dst = "Value obtained from API";
MainActivity.flag = 1;
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
来电活动 - App-1
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
public void btn_click(View v)
{
Intent intent=new Intent(MainActivity.this,com.nestedif.sdk.MainActivity.class);
startActivityForResult(intent, 2);// Activity is started with requestCode 2
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
// check if the request code is same as what is passed here it is 2
if(resultCode==2)
{
String message=data.getStringExtra("latitude");
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}