login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent loginIntent = new Intent(login.this,MainActivity.class);
number = SNumber.getText().toString();
password = PassWord.getText().toString();
xmlThread xmlThread = new xmlThread(url,number,password,loginIntent);
xmlThread.start();setResult(Activity.RESULT_OK,loginIntent);
finish();
}
});
xmlThread中的将数据通过intent传递
userDataList = updatas;
intent.putExtra("imageUrl",userDataList.get(0).getImageUrl());
intent.putExtra("SName", userDataList.get(0).getSName());
intent.putExtra("SNumber", userDataList.get(0).getSNumber());
intent.putExtra("SClass", userDataList.get(0).getSClass());
Log.e("main",userDataList.get(0).getImageUrl());
主函数中点击事件,进入登录界面。
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(MainActivity.this,login.class), REQUSET);
}
});
获取Intent中的参数
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data!=null) {
switch (requestCode) {
case REQUSET:
imageUrl = data.getBundleExtra("imageUrl").toString();//从这行就开始报错了
new HttpImageButton(imageUrl, handler, imageButton);
TName = data.getBundleExtra("SName").toString();
TNumber = data.getBundleExtra("SNumber").toString();
TClass = data.getBundleExtra("SClass").toString();
Toast.makeText(this, imageUrl + TName + TNumber + TClass, Toast.LENGTH_LONG).show();
handler.post(new Runnable() {
@Override
public void run() {
name.setText("1");
SNumber.setText("2");
SClass.setText("3");
}
});
break;
default:
break;
}
}
}
错误提示为java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { cmp=com.tjapp.login1_2/.MainActivity }} to activity {com.tjapp.login1_2/com.tjapp.login1_2.MainActivity}: java.lang.NullPointerException,报出来一个空指针。![图片描述][1]
迷茫2017-04-17 16:00:15
スレッド同期の問題のようです
xmlThread.start();
setResult(Activity.RESULT_OK,loginIntent);
xmlThread は実行前にすでに setResult を持っている可能性があり、インテント imageUrl のコンテンツは初期化されておらず、値も割り当てられていないため、null インデックス例外が報告されます。
阿神2017-04-17 16:00:15
投稿されたコードは乱雑すぎます。アイデアを提供するには、MainActivity の起動モードに注目してください。単一インスタンスの場合、startActivityForResult はすぐに onActivityResult
に戻ります。