Java 将数据从第三个活动发送到第一个活动-正确的方法?
按下按钮后,我想进入第二个活动,然后从第二个活动进入第三个活动。在输入数据并按下按钮后的第三个活动中,我想返回到第一个活动,显示数据,这是我在第三个活动中介绍的。我在下面介绍的方式正确吗?因为我尝试了很多其他的方法,只有这个概念才能带来积极的结果。但我想确定这是正确的方法?这是我的代码: 第一项活动:Java 将数据从第三个活动发送到第一个活动-正确的方法?,java,android,Java,Android,按下按钮后,我想进入第二个活动,然后从第二个活动进入第三个活动。在输入数据并按下按钮后的第三个活动中,我想返回到第一个活动,显示数据,这是我在第三个活动中介绍的。我在下面介绍的方式正确吗?因为我尝试了很多其他的方法,只有这个概念才能带来积极的结果。但我想确定这是正确的方法?这是我的代码: 第一项活动: public class MainActivity extends AppCompatActivity { TextView textViewInformation; Butto
public class MainActivity extends AppCompatActivity {
TextView textViewInformation;
Button button_GoToSecond;
String name;
public static final int REQUESTCODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewInformation = findViewById(R.id.textView);
button_GoToSecond = findViewById(R.id.button);
button_GoToSecond.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, Second.class);
startActivityForResult(i, REQUESTCODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent i) {
if((requestCode == REQUESTCODE) &&(resultCode == RESULT_OK)) {
name = i.getStringExtra("name");
textViewInformation.setText(name);
}
}
}
public class Second extends AppCompatActivity {
Button button_GoToThird;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
button_GoToThird = findViewById(R.id.button2);
button_GoToThird.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Second.this, Third.class);
startActivityForResult(i, MainActivity.REQUESTCODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent i) {
if((requestCode == MainActivity.REQUESTCODE) &&(resultCode == RESULT_OK)) {
String name = i.getStringExtra("name");
Intent j = new Intent();
j.putExtra("name", name);
setResult(RESULT_OK, i);
finish();
}
}
}
public class Third extends AppCompatActivity {
EditText editText_Data;
Button button_SendData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
editText_Data = findViewById(R.id.editText);
button_SendData = findViewById(R.id.button3);
button_SendData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
test();
}
});
}
public void test() {
String name;
name = editText_Data.getText().toString();
Intent i = new Intent();
i.putExtra("name", name);
setResult(RESULT_OK, i);
finish();
}
}
第二项活动:
public class MainActivity extends AppCompatActivity {
TextView textViewInformation;
Button button_GoToSecond;
String name;
public static final int REQUESTCODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewInformation = findViewById(R.id.textView);
button_GoToSecond = findViewById(R.id.button);
button_GoToSecond.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, Second.class);
startActivityForResult(i, REQUESTCODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent i) {
if((requestCode == REQUESTCODE) &&(resultCode == RESULT_OK)) {
name = i.getStringExtra("name");
textViewInformation.setText(name);
}
}
}
public class Second extends AppCompatActivity {
Button button_GoToThird;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
button_GoToThird = findViewById(R.id.button2);
button_GoToThird.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Second.this, Third.class);
startActivityForResult(i, MainActivity.REQUESTCODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent i) {
if((requestCode == MainActivity.REQUESTCODE) &&(resultCode == RESULT_OK)) {
String name = i.getStringExtra("name");
Intent j = new Intent();
j.putExtra("name", name);
setResult(RESULT_OK, i);
finish();
}
}
}
public class Third extends AppCompatActivity {
EditText editText_Data;
Button button_SendData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
editText_Data = findViewById(R.id.editText);
button_SendData = findViewById(R.id.button3);
button_SendData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
test();
}
});
}
public void test() {
String name;
name = editText_Data.getText().toString();
Intent i = new Intent();
i.putExtra("name", name);
setResult(RESULT_OK, i);
finish();
}
}
第三项活动:
public class MainActivity extends AppCompatActivity {
TextView textViewInformation;
Button button_GoToSecond;
String name;
public static final int REQUESTCODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewInformation = findViewById(R.id.textView);
button_GoToSecond = findViewById(R.id.button);
button_GoToSecond.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, Second.class);
startActivityForResult(i, REQUESTCODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent i) {
if((requestCode == REQUESTCODE) &&(resultCode == RESULT_OK)) {
name = i.getStringExtra("name");
textViewInformation.setText(name);
}
}
}
public class Second extends AppCompatActivity {
Button button_GoToThird;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
button_GoToThird = findViewById(R.id.button2);
button_GoToThird.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Second.this, Third.class);
startActivityForResult(i, MainActivity.REQUESTCODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent i) {
if((requestCode == MainActivity.REQUESTCODE) &&(resultCode == RESULT_OK)) {
String name = i.getStringExtra("name");
Intent j = new Intent();
j.putExtra("name", name);
setResult(RESULT_OK, i);
finish();
}
}
}
public class Third extends AppCompatActivity {
EditText editText_Data;
Button button_SendData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
editText_Data = findViewById(R.id.editText);
button_SendData = findViewById(R.id.button3);
button_SendData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
test();
}
});
}
public void test() {
String name;
name = editText_Data.getText().toString();
Intent i = new Intent();
i.putExtra("name", name);
setResult(RESULT_OK, i);
finish();
}
}
使用接口:
首先,创建一个这样的接口
public interface Communicator {
void sendData(String data);
Communicator comm = new FirstActivity();
}
然后让您的第一个活动实现您的接口并重写该方法
然后在你的第三个活动中,像这样启动你的沟通者
public interface Communicator {
void sendData(String data);
Communicator comm = new FirstActivity();
现在,无论何时,只要你想与你的第一个活动沟通。只需使用comm.sendData()方法,您将在override方法中收到它,最好的方法可能是使用Intent。 在第一个活动中发送数据的示例代码(它将自动转到下一个活动): 接收数据的代码(第二个活动):
也可以使用BroadcastReceiver传递数据。在我看来,您应该只使用单个活动和不同的片段。将你得到的数据设置为活动,交换碎片。你应该考虑使用一个活动的片段。在Android中,我们不是在实例化活动。你不会把数据发送到第一个活动实例,为什么?因为您正在创建已存在于内存中的活动的新实例。