如何管理数据上传发送PutExtra

时间:2017-09-03 15:59:31

标签: java android android-intent

我通过PutExtra在活动之间发送数据。它工作得很好。

问题是当您单击后退按钮,给出错误和活动时。 我已经尝试过实现StarActivityForResult选项了,我无法让它工作。

下面的图片。代码“12345”用作示例,并作为PutExtra

发送到三个屏幕

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

代码: 活性1:

<button class="shadow_effect">Button 1</button>
<button class="shadow_effect">Button 2</button>

活动2:

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);

            }
        });


    }
}

活动3:

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");
        }
    }

}

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

2 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,你应该使用片段而不是活动并将所有数据保存在主要活动中,但如果你想继续这种方式,请尝试onBackPressed()方法选择当用户按下时要做什么按钮。

答案 1 :(得分:0)

在活动2中插入此代码

             if(getIntent().getExtras().getString("id_empresa") != null)
             {
             mId_Empresa = getIntent().getExtras().getString("id_empresa");
             }

必须在将数据设置为textview之前检查数据。如果要放入textview的字符串为null,则会生成错误,从而导致崩溃。 希望它有所帮助!