Android 使用putExtra()将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

我似乎无法将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 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中当前超级朋友列表的方法。谢谢你的回复