【发布时间】:2017-01-08 10:00:24
【问题描述】:
我尝试在两个活动之间传递值的 ArrayList,但出现如下错误。提前致谢
原因:java.lang.NullPointerException:尝试在 com.example.android.myapplication.DetailActivity.getextras1 的空对象引用上调用虚拟方法 'android.os.Bundle android.content.Intent.getExtras()' (DetailActivity.java:35) 在 com.example.android.myapplication.MyService.onStartCommand(MyService.java:38) 在 android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3180) 在 android.app.ActivityThread.access$2200 (ActivityThread.java:182) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1595) 在 android.os.Handler.dispatchMessage(Handler.java:111) 在 android.os.Looper.loop(Looper. java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5763) 在 java.lang.reflect.Method.invoke(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:372)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
用于调用其他活动的代码
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
String[] appdescription = getResources().getStringArray(R.array.appdescriptionname);
final String appdescipl = appdescription[position];
final int imagesList = noImagesList[position];
final int imagesList2 = noImagesList2[position];
Intent intent1 = new Intent(getApplicationContext(), DetailActivity.class);
intent1.putExtra("des","mydes");
intent1.putExtra("appdescipl" , appdescipl);
intent1.putExtra("imagesList",imagesList);
intent1.putExtra("imagesList2",imagesList2);
startActivity(intent1);
}
});
详细活动
public class DetailActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail_activity);
this.getextras1();
this.getdescriptionofapp1();
this.getImage1ofapp1();
this.getImage2ofapp1();
startService(new Intent(this, MyService.class));
}
public Bundle getextras1() {
Bundle extras1 = getIntent().getExtras();
return extras1;
}
public TextView getdescriptionofapp1() {
TextView descriptionofapp1 = (TextView) findViewById(R.id.descriptionofapp);
return descriptionofapp1;
}
public ImageView getImage1ofapp1() {
ImageView image1ofapp1 = (ImageView) findViewById(R.id.image1);
return image1ofapp1;
}
public ImageView getImage2ofapp1() {
ImageView image2ofapp1 = (ImageView) findViewById(R.id.image2);
return image2ofapp1;
}
}
我的服务
public class MyService extends Service {
public String description;
public int image1;
public int image2;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
DetailActivity i ;
i = new DetailActivity();
Bundle extras = i.getextras1();
TextView descriptionofapp = i.getdescriptionofapp1();
ImageView image1ofapp = i.getImage1ofapp1();
ImageView image2ofapp = i.getImage2ofapp1();
if ( extras.containsKey("des")){
description = extras.getString("appdescipl");
descriptionofapp.setText(description);
image1 = extras.getInt("imagesList");
image1ofapp.setImageResource(image1);
image2 = extras.getInt("imagesList2");
image2ofapp.setImageResource(image2);
}
else if (extras.containsKey("data")){
description = extras.getString("appdatadescipl");
descriptionofapp.setText(description);
image1 = extras.getInt("imagesOfLists");
image1ofapp.setImageResource(image1);
image2 = extras.getInt("imagesOfLists2");
image2ofapp.setImageResource(image2);
}
this.onDestroy();
return START_STICKY;
}
@Override
public void onDestroy() {
this.stopSelf();
}
}
【问题讨论】: