2017-05-12 30 views
0

結果の別のアクティビティを開始するFragmentActivityがあります。呼び出されたアクティビティが終了すると、onActivityResultは呼び出されません。私はAppCompatActivityアクティビティ(FragmentActivityから拡張されています)を使用していることに違いがありますか?ドキュメントでは、結果が呼び出し側のフラグメントに返され、この場合はフラグメントではないことが示されています。これはアクティビティです。ここでのコードは、非常に簡単です:呼び出し元アクティビティでonActivityResultが呼び出されていません

MainActivity:活動呼び出さ

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 ..... 
    } 

} 

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(); 

    } 


} 
+0

AppCompatActivityからDisplayTextActivityを拡張してみてください。 – FAT

+0

@FerdousAhamedはうまくいかなかった。 –

+0

あなたの呼び出されたアクティビティはEulaActivityではありません。DisplayTextActivity – FAT

答えて

1

documentationによると、あなたのケースでRESULT_OKrequestId大きなまたは同等のウ・タント0を渡す必要がありますされます-1。また、RESULT_OKはリクエストコードと似ていない結果コードのように機能し、startActivityForResultはリクエストコードが必要です。このstartActivityForResult(intent, 0);

よう

何かがこの場合も0で、finishActivity(yourPreviousRequestCode);を使用してEulaActivityを終えます。

0

このソリューション試してください: - MainActivity.java

//Define variable 
public static int REQUEST_CODE = 233; 

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, REQUEST_CODE); //Change here 
    } 

    //this method is never called 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode == REQUEST_CODE) { 
      if(resultCode == RESULT_OK) { 
       if(data != null && data.hasExtra("MESSAGE")) { 
        String resStr = data.getStringExtra("MESSAGE"); 
        Toast.makeText(MainActivity.this, resStr, Toast.LENGTH_SHORT).show(); 
       } 
      }else if(resultCode == RESULT_CANCELED) 
       Toast.makeText(MainActivity.this, "Canceled", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

EulaActivity.java

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(); 
    result.putExtra("MESSAGE","Eula Accepted Set"); 
    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(); 

    } 


} 
関連する問題