我收到错误Null pointer exception error
;以下是我在运行时获取的堆栈跟踪:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.listfragment, PID: 1824
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.android.listfragment.fragments.ContactFragment.onCreateView(ContactFragment.java:44)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2215)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:649)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1238)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1086)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1616)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721)
at android.view.View.measure(View.java:21998)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1498)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
这是我的代码:
ContactFragment.java
public class ContactFragment extends Fragment {
//private editText fields
private EditText title, description, salary, type, company;
private ImageView imageLink;
private Button upload;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_contact, container, false);
//initialize the editText fields
title = (EditText) root.findViewById(R.id.title);
type = (EditText) root.findViewById(R.id.type);
description = (EditText) root.findViewById(R.id.description);
salary = (EditText) root.findViewById(R.id.salary);
imageLink = (ImageView) root.findViewById(R.id.imageLink);
company = (EditText) root.findViewById(R.id.company);
upload = (Button) root.findViewById(R.id.upload);
//set the listener
upload.setOnClickListener(listener);
//return the view
return root;
}
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String mTitle = title.getText().toString().trim();
String mType = type.getText().toString().trim();
String mCompany = company.getText().toString().trim();
String mDescription = description.getText().toString().trim();
String mSalary = salary.getText().toString().trim();
// Create a New Class called "jobOffer" in Parse
ParseObject jobOffer = new ParseObject("JobOffer");
// Create a column named "ImageName" and set the string
jobOffer.put("salary", mSalary);
jobOffer.put("description", mDescription);
jobOffer.put("comapany", mCompany);
jobOffer.put("type", mType);
jobOffer.put("title", mTitle);
jobOffer.put("imageLink", imageLink);
// Create the class and the columns
jobOffer.saveInBackground();
}
};
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="24dp">
<!-- Overview category -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Label -->
<TextView
style="@style/CategoryStyle"
android:text="@string/editText_title"/>
<!-- Name field -->
<EditText
android:id="@+id/title"
style="@style/EditText_Field_Style"
android:hint="@string/hints_title"
android:inputType="textCapWords"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Label -->
<TextView
style="@style/CategoryStyle"
android:text="@string/editText_description"/>
<!-- Breed field -->
<EditText
android:id="@+id/description"
style="@style/EditText_Field_Style"
android:hint="@string/hints_description"
android:inputType="textCapWords" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Label -->
<TextView
style="@style/CategoryStyle"
android:text="@string/editText_type"/>
<!-- Breed field -->
<EditText
android:id="@+id/type"
style="@style/EditText_Field_Style"
android:hint="@string/hints_type"
android:inputType="textCapWords" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Label -->
<TextView
style="@style/CategoryStyle"
android:text="@string/editText_salary"/>
<!-- Breed field -->
<EditText
android:id="@+id/salary"
style="@style/EditText_Field_Style"
android:hint="@string/hints_salary"
android:inputType="textCapWords" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Label -->
<TextView
style="@style/CategoryStyle"
android:text="@string/editText_company"/>
<!-- Breed field -->
<EditText
android:id="@+id/company"
style="@style/EditText_Field_Style"
android:hint="@string/hints_company"
android:inputType="textCapWords" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Label -->
<TextView
style="@style/CategoryStyle"
android:text="@string/editText_imageLink"/>
<!-- Breed field -->
<ImageView
android:id="@+id/imageLink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/file_icon"/>
</LinearLayout>
<Button
android:layout_marginTop="8dp"
android:id="@+id/upload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/editText_upload"
android:layout_gravity="center"
android:backgroundTint="@color/colorAccent"/>
</LinearLayout>
答案 0 :(得分:0)
请尝试
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String mTitle = title.getText().toString().trim();
String mType = type.getText().toString().trim();
String mCompany = company.getText().toString().trim();
String mDescription = description.getText().toString().trim();
String mSalary = salary.getText().toString().trim();
// Create a New Class called "jobOffer" in Parse
ParseObject jobOffer = new ParseObject("JobOffer");
// Create a column named "ImageName" and set the string
jobOffer.put("salary", mSalary);
jobOffer.put("description", mDescription);
jobOffer.put("comapany", mCompany);
jobOffer.put("type", mType);
jobOffer.put("title", mTitle);
jobOffer.put("imageLink", imageLink);
// Create the class and the columns
jobOffer.saveInBackground();
}
});
已更新
您确定所发布的XML完全是fragment_contact
吗?