java - PutExtra如何管理上传发送的数据

标签 java android android-intent

我通过 PutExtra 在 Activity 之间发送数据。它运行完美。

问题是当您单击后退按钮时,会出现错误并提示 Activity 。 我已经尝试实现 StarActivityForResult 选项,但无法让它工作。

下面的图片。以代码“12345”为例,以PutExtra方式发送到三个屏幕

enter image description here enter image description here enter image description here

代码: Activity 1:

public class MainActivity extends AppCompatActivity {

    private Button btnIrAct2;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnIrAct2 = (Button) findViewById(R.id.btnIrAct2);
        btnIrAct2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent2 = new Intent(MainActivity.this, Activity2.class);
                intent2.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent2.putExtra("id_empresa", "12345");
                startActivity(intent2);

            }
        });


    }
}

Activity 2:

public class Activity2 extends AppCompatActivity {

    private Button btnIrAct3;
    private String mId_Empresa = null;
    static final int SERVICO_DETALHES_REQUEST = 1;
    private TextView tvResultado;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);



        /*  Recebe id de outra tela*/
        mId_Empresa = getIntent().getExtras().getString("id_empresa");

        tvResultado = (TextView) findViewById(R.id.tvAct2);
        tvResultado.setText(mId_Empresa);

        btnIrAct3 = (Button) findViewById(R.id.btnIrAct3);
        btnIrAct3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent3 = new Intent(Activity2.this, Activity3.class);
                intent3.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent3.putExtra("id_empresa", "12345");
                startActivityForResult(intent3, SERVICO_DETALHES_REQUEST );

            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (requestCode == SERVICO_DETALHES_REQUEST && resultCode == RESULT_OK) {
            String resultBack = data.getStringExtra("id_empresa");
        }
    }

}

Activity 3:

public class Activity3 extends AppCompatActivity {

    private String idEmpresa = null;
    private TextView resultado;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_3);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        /*  Recebe id de outra tela*/
        idEmpresa = getIntent().getExtras().getString("id_empresa");

        resultado = (TextView) findViewById(R.id.tvAct3);
        resultado.setText(idEmpresa);


    }

    @Override
    public void finish()
    {
        Intent data = new Intent();
        data.putExtra("id_empresa", "12345");
        setResult(Activity.RESULT_OK, data);
        super.finish();
    }

}

我需要解决冲突。因为在我返回时我需要发送像 PutExtra 这样的数据,同时这个 Activity 已经有一段代码已经接收了 PutExtra。

最佳答案

如果我正确理解了这个问题,您应该使用 fragment 而不是 Activity ,并将所有数据保存在主 Activity 中,但如果您想继续这种方式,请尝试 onBackPressed() 方法来选择当用户按下后要执行的操作按钮。

关于java - PutExtra如何管理上传发送的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46025287/

相关文章:

传递父类(super class)型的 Java 接口(interface)方法

java - Intellij Idea中添加外部库的一些问题

Android - API 级别 < 11 的 fragment API

java - java Swing中是否有像FrameLayout(Android)这样的概念?

android - Intent.ACTION_GET_CONTENT 与谷歌驱动器

android - 静态 BroadcastReceiver 未收到自定义 Intent

java - 填充 JTable 时重复值

java - 装饰器模式与列表

android - 如何使用 CSS/HTML5 Jquery Mobile 设置自定义背景

android - data.getExtras().get ("data") android 中低分辨率图像的结果