我有一个活性1使用putExtra,如下所示,其将数据发送到活性2:使用数据由活动1在活动发送2
public void onClick(View v) {
String itemspi = spinnerFood.getSelectedItem().toString();
Intent i = new Intent(getApplicationContext(),Activity2.class);
i.putExtra("data",itemspi);
startActivity(i);
setContentView(R.layout.activity2_layout);
}
我在活性2接收该数据,如下:
Intent i = getIntent();
String spidata = i.getExtras().getString("data");
在Activity2中,我在做AsyncTask来推送MySql数据库中的数据(我从Activity1接收到的数据)和ID(在Activity2本地生成),如下所示:
新的AsyncTask(){
@Override
protected Void doInBackground(Void... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tagID", ID1));
params.add(new BasicNameValuePair("subject", spidata));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url_create_att,
"POST", params);
// check log cat fro response
Log.d("Create Response", json.toString());
// check for success tag
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully created product
Intent i1 = new Intent(getApplicationContext(), Activity2.class);
startActivity(i1);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Student Present", Toast.LENGTH_LONG).show();
}
});
// closing this screen
finish();
} else {
// failed to create product
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_SHORT).show();
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}.execute();
当我推数据(ID和数据从Activy1接收的),该数据被成功地插入到数据库中(使用pgAdmin的检查),但是该应用程序崩溃与下列错误:
注: TagViewer(误差的3号线)是我活性2
楼下可以看到一个错误的onCreate:
这指的是这行代码:
spidata = i.getExtras().getString("data");
所以我的猜测是,当我完成推送数据到数据库中,我说:
if (success == 1) {
// successfully created product
Intent i1 = new Intent(getApplicationContext(), Activity2.class);
startActivity(i1);
}
这需要控制回到onCreate方法,并尝试获取意图数据,但失败,所以应用程序崩溃(我猜可能是错误的)。
我需要保存意图数据(从Activity1发送),以便用户可以在进一步的迭代中将数据(从Activity1发送)和新的ID(在Activity2中本地生成的)推送到数据库中。
请帮帮我!
不可以。我想在Activity2中保存意图数据,直到用户在该页面上。 –
请参阅更新后的答案,在AsyncTask函数中启动Activity2而不使用任何意图数据。 – SachinS
非常感谢兄弟。这是一件很简单的事:) –