我正在将Putextra从第一个活动传递到第二个活动。我验证传递给第二活动的内容。我按预期工作。我的问题是如何将字符串值传递回第一个活动。
在这里我从第一开始叫第二个活动。
public void scannedItem(String barCode,String localArea){
Intent intent = new Intent(this,selectItemActivity.class);
intent.putExtra("Barcode",mScan);
intent.putExtra("Area",myArea);
startActivityForResult(intent,1);
// finish();
}
在第二个活动中,我正在从第一个活动中接收数据,就像这样
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_item);
passedArea = getIntent().getExtras().getString("Area");
passedScan=getIntent().getExtras().getString("Barcode");
updateScreen();
}
我对第一个活动传递的附加内容执行验证,并希望将单个字符串传递回第一个活动。在第二项活动中,我加载了RecyclerViewer,并尝试了onClick。
public void onSelectClick(View view){
String lSelectLocation = mLocations.getLocation();
Timber.d(lSelectLocation);
Intent intent = getIntent();
intent.putExtra("Location",lSelectLocation);
finish();
}
我的问题至少是两部分。 1.)我在第二次活动中将String值传回时有什么错。 2)在第一次活动中,需要什么来接收字符串。我已经尝试过onResume,但以下为空。
protected void onResume() {
super.onResume();
final String sender=this.getIntent().getExtras().getString("Location");
if(sender != null)
{
this.receiveData();
Toast.makeText(this, "Received", Toast.LENGTH_SHORT).show();
}
}
我在第一次活动时也有此方法,但似乎没有被解雇。
受保护的void onActivityResult(int requestCode,String requestLocation,Intent data){ mLoc.setText(requestLocation); }
在过去的几个月中,我在Java中学到了很多东西。我曾担任VB.net程序员多年,有时会迷失在差异中。
谢谢大家。
答案 0 :(得分:1)
用getIntent();
代替onSelectClick方法中的new Intent();
,并定义setResult
,因为它将调用此方法来设置活动返回给其调用者的结果。
public void onSelectClick(View view){
String lSelectLocation = mLocations.getLocation();
Timber.d(lSelectLocation);
Intent intent = new Intent();
intent.putExtra("Location",lSelectLocation);
setResult(1, intent);
finish();
}
在第一个活动中,请使用onActivityResult
从第二个活动中获取返回值,而不是在onResume
中。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 1) {
String str_location = null;
if (data != null) {
str_location = data.getStringExtra("Location");
if (str_location != null) {
Toast.makeText(MainActivity.this, str_location, Toast.LENGTH_LONG).show();
}
}
}
}
答案 1 :(得分:0)