空指针异常错误,位于onCreateView

时间:2018-07-16 17:14:43

标签: android

我收到错误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>

1 个答案:

答案 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吗?