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中,我们不是在实例化活动。你不会把数据发送到第一个活动实例,为什么?因为您正在创建已存在于内存中的活动的新实例。