现在有 Activity A B CA 启动 B
B 启动 C,并且调用 finish 方法关闭自己
C 调用 setResult(100,intent) 方法,然后同样 finish 自己A 的 onActivityResult 会被调用,但是 resultCode 却是0,intent 也是 null请问是什么原因啊?
B 启动 C,并且调用 finish 方法关闭自己
C 调用 setResult(100,intent) 方法,然后同样 finish 自己A 的 onActivityResult 会被调用,但是 resultCode 却是0,intent 也是 null请问是什么原因啊?
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;import com.example.aidlserver.R;public class OneActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one); Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(OneActivity.this, TwoActivity.class);
startActivity(intent);
}
}); } @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { int quest = requestCode;
int result = resultCode;
String d = data.getStringExtra("data");
Log.v("zzw",quest+" "+result+" "+d);
}
}package com.example.one;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;import com.example.aidlserver.R;public class TwoActivity extends AppCompatActivity { static final int INTENT_TWO = 1001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two); Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(TwoActivity.this, ThreeActivity.class);
intent.putExtra("data","from two of message");
startActivityForResult(intent, INTENT_TWO);
finish();
}
}); } @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { int quest = requestCode;
int result = resultCode;
String d = data.getStringExtra("data");
Log.v("zzw",quest+" "+result+" "+d);
}
}
package com.example.one;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;import com.example.aidlserver.R;public class ThreeActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent intent = new Intent(OneActivity.this, TwoActivity.class);
//startActivity(intent);
Intent intent = new Intent(ThreeActivity.this,TwoActivity.class);
intent.putExtra("data", "from Three of message");
setResult(RESULT_OK, intent );
finish();
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { int quest = requestCode;
int result = resultCode;
String d = data.getStringExtra("data");
Log.v("zzw",quest+" "+result+" "+d);
}
}
public static int setValues(int values){
mValues = values;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
//点击跳转至 TwoActivity
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(this, TwoActivity.class), INTENT_ONE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//接收 TwoActivity 界面返回的值
if(requestCode == INTENT_ONE && resultCode == RESULT_OK && data != null) {
String d = data.getStringExtra("data");
Log.v("zzw",quest+" "+result+" "+d);
}
}
}
public class TwoActivity extends AppCompatActivity {
static final int INTENT_TWO = 1002;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//点击跳转至 ThreeActivity
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(this, ThreeActivity.class), INTENT_TWO);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//接收 ThreeActivity 界面返回的值,并关闭当前界面把从 ThreeActivity 接收到的值传递给上一个界面(OneActivity)
if(requestCode == INTENT_TWO && resultCode == RESULT_OK && data != null) {
setResult(RESULT_OK, data)
finish()
}
}
}
public class ThreeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
//点击按钮关闭 ThreeActivity 并返回上一个界面(TwoActivity)
//同时传值 "from Three of message" 回 上一个界面(TwoActivity)
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("data", "from Three of message");
setResult(RESULT_OK, intent);
finish();
}
});
}
}