我遇到了Bundle parcelable(NullPointerException)的问题:
日志:
12-17 12:32:18.000: D/dalvikvm(6077): WAIT_FOR_CONCURRENT_GC blocked 8ms
12-17 12:32:18.025: I/ServiceUtil(6077): Połączono z serwisem
12-17 12:32:18.025: I/MYSTERIOUSPOLAND(6077): Parcel
12-17 12:32:18.025: D/AndroidRuntime(6077): Shutting down VM
12-17 12:32:18.025: W/dalvikvm(6077): threadid=1: thread exiting with uncaught exception (group=0x413582a0)
12-17 12:32:18.030: E/AndroidRuntime(6077): FATAL EXCEPTION: main
12-17 12:32:18.030: E/AndroidRuntime(6077): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mysteriouspoland/com.example.mysteriouspoland.OpisMiejscaActivity}: java.lang.NullPointerException
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.ActivityThread.access$600(ActivityThread.java:140)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.os.Handler.dispatchMessage(Handler.java:99)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.os.Looper.loop(Looper.java:137)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.ActivityThread.main(ActivityThread.java:4898)
12-17 12:32:18.030: E/AndroidRuntime(6077): at java.lang.reflect.Method.invokeNative(Native Method)
12-17 12:32:18.030: E/AndroidRuntime(6077): at java.lang.reflect.Method.invoke(Method.java:511)
12-17 12:32:18.030: E/AndroidRuntime(6077): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
12-17 12:32:18.030: E/AndroidRuntime(6077): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
12-17 12:32:18.030: E/AndroidRuntime(6077): at dalvik.system.NativeStart.main(Native Method)
12-17 12:32:18.030: E/AndroidRuntime(6077): Caused by: java.lang.NullPointerException
12-17 12:32:18.030: E/AndroidRuntime(6077): at com.example.mysteriouspoland.OpisMiejscaActivity.display(OpisMiejscaActivity.java:79)
12-17 12:32:18.030: E/AndroidRuntime(6077): at com.example.mysteriouspoland.OpisMiejscaActivity.onCreate(OpisMiejscaActivity.java:57)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.Activity.performCreate(Activity.java:5206)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
12-17 12:32:18.030: E/AndroidRuntime(6077): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
12-17 12:32:18.030: E/AndroidRuntime(6077): ... 11 more
OpisMiejscaActivity:
public class OpisMiejscaActivity extends FragmentActivity
{
Miejsce zMiejsce;
boolean mShowMap;
GoogleMap zMap;
private ImageView imgView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.opis_miejsca_activity);
getActionBar().setDisplayHomeAsUpEnabled(true);
//
mShowMap = GooglePlayServiceUtility.isPlayServiceAvailable(this) && initMap();
Bundle b = getIntent().getExtras();
zMiejsce = b.getParcelable(".model.Miejsce");
display();
}
//
private boolean initMap()
{
// TODO Auto-generated method stub
if(zMap == null)
{
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
zMap = fm.getMap();
// MapFragment mapFrag = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
// zMap = mapFrag.getMap();
}
return (zMap != null);
}
private void display()
{
TextView tv = (TextView) findViewById(R.id.titleText);
tv.setText(zMiejsce.getTytul1());
NumberFormat nf = NumberFormat.getCurrencyInstance();
tv = (TextView) findViewById(R.id.priceText);
tv.setText(nf.format(zMiejsce.getKoszt()));
tv = (TextView) findViewById(R.id.descText);
tv.setText(zMiejsce.getOpis());
//imgView = (ImageView) findViewById(R.id.imageView1);
//imgView.setImageResource(R.drawable.map_whitney);
//imgView.setImageBitmap(BitmapFactory.decodeFile(zMiejsce.getImage()));
/*imgView = (ImageView) findViewById(R.id.imageView1);
imgView.setImageBitmap(BitmapFactory.decodeFile(zMiejsce.getImage()));
*/
//
if (mShowMap)
{
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(zMiejsce.getLatLng(), 5);
zMap.moveCamera(update);
}
/*SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
GoogleMap zMap = fm.getMap();*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.opis_miejsca, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_goto_action :
// Go to external mapping app
sendToActionIntent();
break;
case android.R.id.home:
// User pressed the 'Up' button on the action bar
finish();
break;
}
return false;
}
}
在我看来,OpisMiejscaActivity中的片段有问题:
Bundle b = getIntent().getExtras();
zMiejsce = b.getParcelable(".model.Miejsce");
display();
也许钥匙有问题?
Miejsce:
public class Miejsce implements Parcelable
{
private long identyfikator;
private String miasto;
private String tytul1;
private String tytul2;
private String opis;
private String marker = "";
private double koszt;
private double poziomTrudnosci;
private String image;
private double latitude = 51.108342;
private double longitude = 17.060831;
private static String LOGTAG = "MYSTERIOUSPOLAND";
public Miejsce()
{
}
public Miejsce(Parcel in)
{
Log.i(LOGTAG, "Parcel");
identyfikator = in.readLong();
miasto = in.readString();
tytul1 = in.readString();
tytul2 = in.readString();
koszt = in.readDouble();
poziomTrudnosci = in.readDouble();
image = in.readString();
latitude = in.readDouble();
longitude = in.readDouble();
marker = in.readString();
}
public long getIdentyfikator()
{
return identyfikator;
}
public void setIdentyfikator(long identyfikator)
{
this.identyfikator = identyfikator;
}
public String getMiasto()
{
return miasto;
}
public void setMiasto(String miasto)
{
this.miasto = miasto;
}
public String getTytul1()
{
return tytul1;
}
public void setTytul1(String tytul1)
{
this.tytul1 = tytul1;
}
public String getTytul2()
{
return tytul2;
}
public void setTytul2(String tytul2)
{
this.tytul2 = tytul2;
}
public String getOpis()
{
return opis;
}
public void setOpis(String opis)
{
this.opis = opis;
}
public double getKoszt()
{
return koszt;
}
public void setKoszt(double koszt)
{
this.koszt = koszt;
}
public double getPoziomTrudnosci()
{
return poziomTrudnosci;
}
public void setPoziomTrudnosci(double poziomTrudnosci)
{
this.poziomTrudnosci = poziomTrudnosci;
}
public String getImage()
{
return image;
}
public void setImage(String image)
{
this.image = image;
}
public double getLatitude()
{
return latitude;
}
public void setLatitude(double latitude)
{
this.latitude = latitude;
}
public double getLongitude()
{
return longitude;
}
public void setLongitude(double longitude)
{
this.longitude = longitude;
}
public String getMarker()
{
return marker;
}
public void setMarker(String marker)
{
this.marker = marker;
}
@Override
public String toString()
{
NumberFormat nf = NumberFormat.getCurrencyInstance();
return tytul1 + "\n(" + nf.format(koszt) + ")";
}
public LatLng getLatLng()
{
LatLng latLng = new LatLng(latitude, longitude);
return latLng;
}
@Override
public int describeContents()
{
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeLong(identyfikator);
dest.writeString(miasto);
dest.writeString(tytul1);
dest.writeString(tytul2);
dest.writeString(opis);
dest.writeDouble(koszt);
dest.writeDouble(poziomTrudnosci);
dest.writeString(image);
dest.writeDouble(latitude);
dest.writeDouble(longitude);
dest.writeString(marker);
}
public static final Parcelable.Creator<Miejsce> CREATOR = new Parcelable.Creator<Miejsce>()
{
@Override
public Miejsce createFromParcel(Parcel source)
{
return new Miejsce(source);
}
@Override
public Miejsce[] newArray(int size)
{
return new Miejsce[size];
}
};
}
答案 0 :(得分:0)
您可以通过执行b.hasKey(“。model.Miejsce”)确保捆绑包具有该条目;