[英]NullPointerException - Unable to start activity
尝试运行我的应用程序时,我从logcat收到以下消息。 本质上,我正在尝试使用查询从解析中检索信息列表。 该代码似乎很好,所以我不太确定如何解决此问题。
Logcat讯息
08-25 05:40:03.605: E/AndroidRuntime(7112): FATAL EXCEPTION: main
08-25 05:40:03.605: E/AndroidRuntime(7112): Process: com.dooba.beta, PID: 7112
08-25 05:40:03.605: E/AndroidRuntime(7112): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dooba.beta/com.dooba.beta.usermatch}: java.lang.NullPointerException
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.ActivityThread.access$800(ActivityThread.java:135)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.os.Handler.dispatchMessage(Handler.java:102)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.os.Looper.loop(Looper.java:136)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.ActivityThread.main(ActivityThread.java:5017)
08-25 05:40:03.605: E/AndroidRuntime(7112): at java.lang.reflect.Method.invokeNative(Native Method)
08-25 05:40:03.605: E/AndroidRuntime(7112): at java.lang.reflect.Method.invoke(Method.java:515)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-25 05:40:03.605: E/AndroidRuntime(7112): at dalvik.system.NativeStart.main(Native Method)
08-25 05:40:03.605: E/AndroidRuntime(7112): Caused by: java.lang.NullPointerException
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.dooba.beta.Fragment1.<init>(Fragment1.java:77)
08-25 05:40:03.605: E/AndroidRuntime(7112): at java.lang.Class.newInstanceImpl(Native Method)
08-25 05:40:03.605: E/AndroidRuntime(7112): at java.lang.Class.newInstance(Class.java:1208)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.support.v4.app.Fragment.instantiate(Fragment.java:377)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.dooba.beta.usermatch.initialisePaging(usermatch.java:31)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.dooba.beta.usermatch.onCreate(usermatch.java:24)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.Activity.performCreate(Activity.java:5231)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
08-25 05:40:03.605: E/AndroidRuntime(7112): ... 11 more
08-25 05:40:03.605: E/AndroidRuntime(7112): at java.lang.reflect.Method.invoke(Method.java:515)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-25 05:40:03.605: E/AndroidRuntime(7112): at dalvik.system.NativeStart.main(Native Method)
08-25 05:40:03.605: E/AndroidRuntime(7112): Caused by: java.lang.NullPointerException
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.dooba.beta.Fragment1.<init>(Fragment1.java:77)
08-25 05:40:03.605: E/AndroidRuntime(7112): at java.lang.Class.newInstanceImpl(Native Method)
08-25 05:40:03.605: E/AndroidRuntime(7112): at java.lang.Class.newInstance(Class.java:1208)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.support.v4.app.Fragment.instantiate(Fragment.java:377)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.dooba.beta.usermatch.initialisePaging(usermatch.java:31)
08-25 05:40:03.605: E/AndroidRuntime(7112): at com.dooba.beta.usermatch.onCreate(usermatch.java:24)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.Activity.performCreate(Activity.java:5231)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-25 05:40:03.605: E/AndroidRuntime(7112): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
08-25 05:40:03.605: E/AndroidRuntime(7112): ... 11 more
活动部分代码
query1.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects,ParseException e) {
for(int i=0;i<objects.size();i++){
// Do whatever you need to extract object from "users"
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1);
query.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
mUserNameRetrieved = (TextView) getActivity().findViewById(R.id.userlistname);
mUserNameRetrieved.setText(objects.get(i).get("Name").toString());
final String userRetrieveName = mUserNameRetrieved.getText().toString();
Button newPage = (Button)getView().findViewById(R.id.btnMatchConfirm);
newPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ParseUser currentUser = ParseUser.getCurrentUser();
currentUser.put("UserMatchName", userRetrieveName);
Intent intent = new Intent(getActivity(), matchOptionActivity.class);
startActivity(intent);
}
});
}
}//for loop
});
更新资料
更新2
更新3
08-25 14:20:17.143: E/AndroidRuntime(8520): FATAL EXCEPTION: main
08-25 14:20:17.143: E/AndroidRuntime(8520): Process: com.dooba.beta, PID: 8520
08-25 14:20:17.143: E/AndroidRuntime(8520): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dooba.beta/com.dooba.beta.usermatch}: java.lang.NullPointerException
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.ActivityThread.access$800(ActivityThread.java:135)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.os.Handler.dispatchMessage(Handler.java:102)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.os.Looper.loop(Looper.java:136)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.ActivityThread.main(ActivityThread.java:5017)
08-25 14:20:17.143: E/AndroidRuntime(8520): at java.lang.reflect.Method.invokeNative(Native Method)
08-25 14:20:17.143: E/AndroidRuntime(8520): at java.lang.reflect.Method.invoke(Method.java:515)
08-25 14:20:17.143: E/AndroidRuntime(8520): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-25 14:20:17.143: E/AndroidRuntime(8520): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-25 14:20:17.143: E/AndroidRuntime(8520): at dalvik.system.NativeStart.main(Native Method)
08-25 14:20:17.143: E/AndroidRuntime(8520): Caused by: java.lang.NullPointerException
08-25 14:20:17.143: E/AndroidRuntime(8520): at com.dooba.beta.Fragment1.<init>(Fragment1.java:78)
08-25 14:20:17.143: E/AndroidRuntime(8520): at java.lang.Class.newInstanceImpl(Native Method)
08-25 14:20:17.143: E/AndroidRuntime(8520): at java.lang.Class.newInstance(Class.java:1208)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.support.v4.app.Fragment.instantiate(Fragment.java:377)
08-25 14:20:17.143: E/AndroidRuntime(8520): at com.dooba.beta.usermatch.initialisePaging(usermatch.java:31)
08-25 14:20:17.143: E/AndroidRuntime(8520): at com.dooba.beta.usermatch.onCreate(usermatch.java:24)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.Activity.performCreate(Activity.java:5231)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-25 14:20:17.143: E/AndroidRuntime(8520): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
08-25 14:20:17.143: E/AndroidRuntime(8520): ... 11 more
更新3个代码
public class Fragment1 extends Fragment {
public interface Constants {
String LOG = "com.dooba.beta";
}
private String currentUserId;
private ArrayAdapter<String> namesArrayAdapter;
private ArrayList<String> names;
private ArrayList<String> age;
private ArrayList<String> headline;
private ArrayList<String> activityname;
protected TextView mUserRetrieved;
protected TextView mUserActivityNameRetrieved;
protected TextView mUserAgeRetrieved;
protected TextView mUserHeadlineRetrieved;
private ArrayList<Images> alProfilePicture;
private ListView usersListView;
private Button logoutButton;
String userGender = ParseUser.getCurrentUser().getString("Gender");
String activityName = ParseUser.getCurrentUser().getString("ActivityName");
Number maxDistance = ParseUser.getCurrentUser().getNumber(
"Maximum_Distance");
String userLookingGender = ParseUser.getCurrentUser().getString(
"Looking_Gender");
Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");
Number userage = ParseUser.getCurrentUser().getNumber("Age");
TextView mUserNameRetrieved = (TextView) getActivity().findViewById(R.id.userlistname);
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final String userRetrieveName = mUserNameRetrieved.getText().toString();
Button newPage = (Button)getView().findViewById(R.id.btnMatchConfirm);
newPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ParseUser currentUser = ParseUser.getCurrentUser();
currentUser.put("UserMatchName", userRetrieveName);
Intent intent = new Intent(getActivity(), matchOptionActivity.class);
startActivity(intent);
}
});
setConversationsList();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1_layout, container,
false);
return view;
}
private void setConversationsList() {
currentUserId = ParseUser.getCurrentUser().getObjectId();
names = new ArrayList<String>();
age = new ArrayList<String>();
headline = new ArrayList<String>();
activityname = new ArrayList<String>();
alProfilePicture = new ArrayList<Images>();
// String userActivitySelectionName = null;
ParseQuery<ParseUser> query = ParseUser.getQuery();
// query.whereEqualTo("ActivityName",userActivitySelectionName);
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1);
query.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
query.orderByDescending("Name");
ParseQuery<ParseUser> query1 = ParseUser.getQuery();
// query.whereEqualTo("ActivityName",userActivitySelectionName);
query1.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query1.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query1.whereEqualTo("Looking_Gender", userGender);
query1.setLimit(1);
query1.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
query1.orderByDescending("Name");
ParseQuery<ParseUser> query11 = ParseUser.getQuery();
// query.whereEqualTo("ActivityName",userActivitySelectionName);
query11.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query11.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query11.whereEqualTo("Looking_Gender", userGender);
query11.setLimit(1);
query11.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
query11.orderByDescending("Name");
ParseQuery<ParseUser> query4 = ParseUser.getQuery();
// query.whereEqualTo("ActivityName",userActivitySelectionName);
query4.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query4.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query4.whereEqualTo("Looking_Gender", userGender);
query4.setLimit(1);
query4.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age",
ParseQuery<ParseUser> query5 = ParseUser.getQuery();
// query.whereEqualTo("ActivityName",userActivitySelectionName);
query5.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query5.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query5.whereEqualTo("Looking_Gender", userGender);
query5.setLimit(1);
query5.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age",
Log.d(Constants.LOG, "");
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects,ParseException e) {
for(int i=0;i<objects.size();i++){
// Do whatever you need to extract object from "users"
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1);
query.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
query.orderByDescending("Name");
ParseFile image = objects.get(i).getParseFile("ProfilePicture");
ParseImageView imageView = (ParseImageView) getView().findViewById(R.id.profilePictureresult);
// The placeholder will be used before and during the fetch, to be replaced by the fetched image
// data.
imageView.setPlaceholder(getResources().getDrawable(R.drawable.profile_pict));
imageView.setParseFile(image);
imageView.loadInBackground(new GetDataCallback() {
@Override
public void done(byte[] data, ParseException e) {
if (data != null) {
Log.i("ParseImageView", "Fetched: " + data.length);
} else {
Log.e("ParseImageView", "Error fetching: " + e.getMessage());
}
}
});
}
}//for loop
});
query1.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects,ParseException e) {
for(int i=0;i<objects.size();i++){
// Do whatever you need to extract object from "users"
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1);
query.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
mUserNameRetrieved = (TextView) getActivity().findViewById(R.id.userlistname);
mUserNameRetrieved.setText(objects.get(i).get("Name").toString());
}
}//for loop
});
query11.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects,ParseException e) {
for(int i=0;i<objects.size();i++){
// Do whatever you need to extract object from "users"
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1);
query.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
mUserHeadlineRetrieved = (TextView) getActivity().findViewById(R.id.userlistheadline);
mUserHeadlineRetrieved.setText(objects.get(i).get("Headline").toString());
}
}//for loop
});
query4.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects,ParseException e) {
for(int i=0;i<objects.size();i++){
// Do whatever you need to extract object from "users"
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1);
query.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
mUserActivityNameRetrieved = (TextView) getActivity().findViewById(R.id.userlistactivityname);
mUserActivityNameRetrieved.setText(objects.get(i).get("ActivityName").toString());
}
}//for loop
});
query5.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects,ParseException e) {
for(int i=0;i<objects.size();i++){
// Do whatever you need to extract object from "users"
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1);
query.whereEqualTo("ActivityName", activityName);
// query.whereGreaterThanOrEqualTo("Age", minimumAge);
// query.whereLessThanOrEqualTo("Age", maximumAge);
mUserAgeRetrieved = (TextView) getActivity().findViewById(R.id.userlistage);
mUserAgeRetrieved.setText(objects.get(i).get("Age").toString());
}
}//for loop
});
}
public void openConversation(ArrayList<String> names, int pos) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("Name", names.get(pos));
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> user, ParseException e) {
if (e == null) {
Intent intent = new Intent(getActivity()
.getApplicationContext(), MessagingActivity.class);
intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
startActivity(intent);
} else {
Toast.makeText(getActivity().getApplicationContext(),
"Error finding that user", Toast.LENGTH_SHORT)
.show();
}
}
});
}
}
mUserNameRetrieved
字段从未在Fragment1
初始化,因此如果您调用getText()
,则该字段为null。
您的mUserNameRetrieved
变量未收到任何值。 尝试SysOut
其值或进行一些条件检查,以便如果它不接收任何值,则不会给出错误(仅在需要时使用条件)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.