2016-07-07 4 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를 함수이다 Second Activity 클래스의 Back 버튼을 누를 때 클래스가 호출되어야하지만 c가 아닌 클래스가 호출되어야합니다. 내가 토스트를 알 수 없기 때문에 alled했다 의도 후.

나를 교정하고 이에 대한 해결책을 제공해주십시오. 감사.

+0

하는 SetResult (RESULT_OK)를 넣어 시도; 두 번째 활동에서 –

답변

1

은 startActivityForResult (RESENT_OK)의 RESULT_OK를 대체합니다. 일부 상수는 양수입니다. RESULT_OK는 -1

+0

감사합니다.이 솔루션은 저에게 효과적입니다. 심지어 두 번째 클래스에는 setResult가 필요하지 않습니다. 논리적 체인에 맞는 것처럼 보이지만 왜 RESULT_OK가 작동하지 않는지 설명해주십시오. 다시 한번 감사합니다 –

+0

그것의 부정적인 숫자 때문에, 분명히 받아 들여지지 않는 :) 어쨌든 당신은 상당히 혼란 스러울 것입니다 RESULT_OK에 requestCode와 resultCode를 비교할 것입니다 onActivityResult 에서처럼 어리 악용 상수가 될 것입니다 – tibbi

0

입니다. onActivityResult 메서드는 호출되지 않습니다. 왜냐하면 두 번째 클래스에서 반환 코드를 설정해야하기 때문입니다.

Official Documentation

는 말한다 :

활동이나 종료, 그것은 setResult (INT)이 상위에 다시 을 데이터를 반환하기 위해 호출 할 수 있습니다. 항상 결과 코드을 제공해야하며 표준 결과 RESULT_CANCELED, RESULT_OK 또는 RESULT_FIRST_USER에서 시작하는 사용자 지정 값 이 될 수 있습니다.

결과 코드를 설정하려면 작업이 닫히기 전에 setResult 메서드를 사용하십시오.

이 두 번째 클래스에 다음 줄을 추가합니다 : 예를 들어

setResult(RESULT_OK) 

, 당신은 방법은 onBackPressed 대체 할 수 있습니다와 같이,이 setResult을 넣어 :

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

이 솔루션입니다 나를 위해 일하지 않아. @ tibbi 솔루션은 두 번째 클래스에서 setResult를 설정하지 않고 나를 위해 작동하지만. 이 문제에 대한 귀하의 배려에 감사드립니다. –

관련 문제