我通过PutExtra在活动之间发送数据。它工作得很好。
问题是当您单击后退按钮,给出错误和活动时。 我已经尝试过实现StarActivityForResult选项了,我无法让它工作。
下面的图片。代码“12345”用作示例,并作为PutExtra
发送到三个屏幕代码: 活性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的代码。
答案 0 :(得分:1)
如果我正确理解了这个问题,你应该使用片段而不是活动并将所有数据保存在主要活动中,但如果你想继续这种方式,请尝试onBackPressed()方法选择当用户按下时要做什么按钮。
答案 1 :(得分:0)
在活动2中插入此代码
if(getIntent().getExtras().getString("id_empresa") != null)
{
mId_Empresa = getIntent().getExtras().getString("id_empresa");
}
必须在将数据设置为textview之前检查数据。如果要放入textview的字符串为null,则会生成错误,从而导致崩溃。 希望它有所帮助!