Я готовлю 2 приложения, назовите их App-1 и App-2, используя App-1, я вызываю MainActivity App-2 из StartActivityForResult(). Пока это работает нормально, я могу вызвать App-2 MainActivity. Теперь для расчетов App-2 внутренне вызывает SecondActivity App-2. Итак, в этот момент приложение начинает ломаться. Не дожидаясь внутреннего ответа от SecondActivity, MainActivity неявно отвечает с помощью resultCode=0 и null в данных нашему приложению-1 (я даже не вызывал setResult()).
И я не могу напрямую ответить из MainActivity, обязательно мне нужно использовать SecondActivity из приложения-2, затем вернуться в приложение-2 MainActivity и ответить на приложение-1.
Помогите мне с этим. (поскольку мое приложение-2 представляет собой библиотеку .aar, включенную в приложение-1, я не могу отлаживать его). Ниже приведен код для него.
MainActivity.java — Приложение2
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();
}
}
Вторая активность – приложение 2
@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();
}
Активность вызывающего абонента – Приложение 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();
}
}