在调用活动时未调用 onActivityResult

Kri*_*lsh 2 android onactivityresult

我有一个 FragmentActivity 正在启动另一个结果活动。当被调用的活动完成时,不会调用 onActivityResult。我使用 AppCompatActivity 活动(从 FragmentActivity 扩展)有什么不同吗?文档说结果将返回给调用片段,在这种情况下,它不是片段,而是一个活动。这是代码,非常简单:

主要活动:

public class SMSEmailActivityNew extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      //setup activity....
      Intent i = new Intent(this, EulaActivity.class);
      i.putExtra(Globals.keyFileName,Globals.FILE_EULA );
      startActivityForResult(i,RESULT_OK);
   }

   //this method is never called
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data)  {
      super.onActivityResult(requestCode, resultCode, data); 
      //dowork .....
   }

}
Run Code Online (Sandbox Code Playgroud)

调用的活动:

EulaActivity extends AppCompatActivity implements OnClickListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        //set up activity ....
    }

    public void onClick(View v) {
       Intent result = new Intent();
       if (bPermissionGranted) {
           setResult(Activity.RESULT_OK, result);
           // Determine if EULA was accepted this time

         getSharedPreferences().edit().putBoolean(Globals.KEY_EULA_ACCEPTED, true).apply();

        } else {
           setResult(Activity.RESULT_CANCELED, result);
        }
        finish();

  }


}
Run Code Online (Sandbox Code Playgroud)

Flo*_*lin 7

根据文档,您需要传递requestId大于或等于 0。在您的情况下RESULT_OK-1. 也RESULT_OK像结果代码,不像请求代码,startActivityForResult需要一个请求代码。

像这样的东西 startActivityForResult(intent, 0);

同时完成EulaActivity使用finishActivity(yourPreviousRequestCode);,在这种情况下0