Android 使用putExtra()将UUID传递给另一个活动后,将UUID分配给对象
我似乎无法将UUID分配给对象。我将UUID从一个活动传递到另一个活动-UUID传递正确。但是我现在不能在没有得到空指针异常的情况下将其分配给对象 第一项活动:Android 使用putExtra()将UUID传递给另一个活动后,将UUID分配给对象,android,nullpointerexception,uuid,Android,Nullpointerexception,Uuid,我似乎无法将UUID分配给对象。我将UUID从一个活动传递到另一个活动-UUID传递正确。但是我现在不能在没有得到空指针异常的情况下将其分配给对象 第一项活动: package com.example.superfriends; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import androi
package com.example.superfriends;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class DesginNewSFFragment extends Fragment {
private ImageView male, female;
public SuperFriend mSF;
private final String TAG = "DesignNewSFFragment";
private final String IS_MALE = "IS MALE";
private final static String EXTRA_SF_ID = "com.example.superfriends.sf_id";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_design_new_sf, parent, false);
getActivity().setTitle(R.string.design_SF);
male = (ImageView)v.findViewById(R.id.male);
male.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSF = new SuperFriend(true);
Intent i = new Intent(getActivity(), ChooseMaleCostumeActivity.class);
i.putExtra(DesginNewSFFragment.EXTRA_SF_ID, mSF.getID());
Log.d(TAG, "UUID initial: " + mSF.getID());
startActivity(i);
}
});
female = (ImageView)v.findViewById(R.id.female);
female.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSF = new SuperFriend(false);
Intent i = new Intent(getActivity(), ChooseFemaleCostumeActivity.class);
i.putExtra(DesginNewSFFragment.EXTRA_SF_ID, mSF.getID());
Log.d(TAG, "Design new female SF");
startActivity(i);
}
});
return v;
}
import java.util.UUID;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager.LayoutParams;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class ChooseFemaleCostumeFragment extends Fragment {
int selected;
SuperFriend mSF;
int[] femaleCostumes;
private ImageView i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11;
private Button next;
private static final String EXTRA_SF_ID = "com.example.superfriends.sf_id";
private final String TAG = "ChooseFemaleCostumeFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_new_male_female_sf, parent, false);
getActivity().setTitle(R.string.choose_a_costume);
Intent i = getActivity().getIntent();
Bundle extras = i.getExtras();
if (extras != null) {
UUID sfId = (UUID)i.getSerializableExtra(EXTRA_SF_ID);
Log.d(TAG, "UUID final: " + sfId);
mSF = AllMySF.get(getActivity()).getSF(sfId);
Log.d(TAG, "mSF assigned to: " + mSF.getID()); //NULL POINTER EXCEPTION HERE WHEN mSF.getID() IS USED
} }
}
第二项活动:
package com.example.superfriends;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class DesginNewSFFragment extends Fragment {
private ImageView male, female;
public SuperFriend mSF;
private final String TAG = "DesignNewSFFragment";
private final String IS_MALE = "IS MALE";
private final static String EXTRA_SF_ID = "com.example.superfriends.sf_id";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_design_new_sf, parent, false);
getActivity().setTitle(R.string.design_SF);
male = (ImageView)v.findViewById(R.id.male);
male.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSF = new SuperFriend(true);
Intent i = new Intent(getActivity(), ChooseMaleCostumeActivity.class);
i.putExtra(DesginNewSFFragment.EXTRA_SF_ID, mSF.getID());
Log.d(TAG, "UUID initial: " + mSF.getID());
startActivity(i);
}
});
female = (ImageView)v.findViewById(R.id.female);
female.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSF = new SuperFriend(false);
Intent i = new Intent(getActivity(), ChooseFemaleCostumeActivity.class);
i.putExtra(DesginNewSFFragment.EXTRA_SF_ID, mSF.getID());
Log.d(TAG, "Design new female SF");
startActivity(i);
}
});
return v;
}
import java.util.UUID;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager.LayoutParams;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class ChooseFemaleCostumeFragment extends Fragment {
int selected;
SuperFriend mSF;
int[] femaleCostumes;
private ImageView i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11;
private Button next;
private static final String EXTRA_SF_ID = "com.example.superfriends.sf_id";
private final String TAG = "ChooseFemaleCostumeFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_new_male_female_sf, parent, false);
getActivity().setTitle(R.string.choose_a_costume);
Intent i = getActivity().getIntent();
Bundle extras = i.getExtras();
if (extras != null) {
UUID sfId = (UUID)i.getSerializableExtra(EXTRA_SF_ID);
Log.d(TAG, "UUID final: " + sfId);
mSF = AllMySF.get(getActivity()).getSF(sfId);
Log.d(TAG, "mSF assigned to: " + mSF.getID()); //NULL POINTER EXCEPTION HERE WHEN mSF.getID() IS USED
} }
包含getSF()方法的类:
有人能解释为什么我不能将UUID分配给对象mSF吗?所以我最终发现了,我犯了一个多么愚蠢的错误:p我没有创建一个方法将新的超级朋友添加到AllMySF中当前的超级朋友列表中。一旦我这样做了,新的超级朋友就在超级朋友数据库中,我可以调用它而不会引发异常。您不能将UUID分配给参考mSF,因为它的类型错误。但这不是你的代码想要做的;这将导致编译器错误,而不是NPE。学习读取堆栈跟踪。如果你有关于堆栈跟踪的问题,发布它。我已经解决了。这并不是说UUId是错误的类型。我没有创建将新超级朋友添加到AllMySF中当前超级朋友列表的方法。谢谢你的回复