2016-07-07 18 views
0

この質問は複数のスレッドで発生していますが、その解決策は私にとっては効果がありません。Android onActivityResultが呼び出されていません

これが私のマニフェストファイル

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.intent" 
     android:versionCode="1" 
     android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="8" 
      android:targetSdkVersion="23"/> 
<application android:icon="@drawable/icon" 
      android:label="@string/app_name" 
      android:allowBackup="false"> 
    <activity android:name=".Start"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 
    <activity android:name=".Second"/> 
</application> 
</manifest> 

この私の起動クラスである

package com.example.intent; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Toast; 

public class Start extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toast.makeText(this, "First Intent", Toast.LENGTH_LONG).show(); 
    Intent intent = new Intent(this, Second.class); 
    startActivityForResult(intent, RESULT_OK); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Toast.makeText(this, "After Intent", Toast.LENGTH_LONG).show(); 
} 
} 

これは、コードに応じて今私の第二のクラス

package com.example.intent; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class Second extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toast.makeText(this, "Second Intent", Toast.LENGTH_LONG).show(); 
} 
} 

、スタートでonActivityResult機能です2番目のアクティビティクラスの[戻る]ボタンを押したときにクラスを呼び出す必要がありますが、それはcではありません私はトーストがインテントの後に見えることができないのでalled。

私を是正し、解決策を提供してください。ありがとう。

+0

てみてください。あなたの第二の活動で –

答えて

1

startActivityForResult(RESTRT_OK)のstartActivityForでRESULT_OKを置き換えます。いくつかのカスタム定数は正の数です。 RESULT_OKは-1

+0

ありがとうございます。このソリューションは私のために働く。 2番目のクラスにsetResultを持つ必要はありません。論理チェーンに合っているように見えますが、なぜRESULT_OKが機能しないのか説明してください。もう一度ありがとうございました –

+0

それは負の数のために動作していません。どういうわけか受け入れられません:)とにかく、誤った定数であるように、onActivityResultのようにrequestCodeとresultCodeの両方をRESULT_OKと比較するとかなり混乱するでしょう。 – tibbi

0

メソッドonActivityResultは呼び出されていません。これは、第2クラスに戻りコードを設定する必要があるためです。

Official Documentationは言う:

活動が終了、それが戻って その親にデータを返すためにsetResult(int)を呼び出すことができます。 必ず結果コードを提供する必要があります。 標準結果RESULT_CANCELED、RESULT_OK、またはRESULT_FIRST_USERから始まる任意のカスタム値 を指定する必要があります。

結果コードを設定するには、アクティビティが終了する前にsetResultメソッドを使用します。

は、2番目のクラスに次の行を追加します。たとえば

setResult(RESULT_OK) 

を、あなたはonBackPressedメソッドをオーバーライドすることができ、このように、そこにsetResultを置く:SetResult(RESULT_OK)を入れて

@Override 
public void onBackPressed() 
{ 
    setResult(RESULT_OK) 
    super.onBackPressed(); 
} 
+0

私のために働いていない。 @ tibbiの解決策は私のために働くが、セカンドクラスにsetResultを設定することはしない。この問題に対するあなたの配慮に感謝します。 –

関連する問題