ContactFragment.java中的空指针异常

时间:2014-08-06 13:38:10

标签: android

我在运行时收到空指针异常。我发布了与之相关的代码。

堆栈跟踪:

08-06 09:25:35.978: E/AndroidRuntime(3029):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
08-06 09:29:27.708: E/AndroidRuntime(3084): FATAL EXCEPTION: main
08-06 09:29:27.708: E/AndroidRuntime(3084): Process: com.loco.android, PID: 3084
08-06 09:29:27.708: E/AndroidRuntime(3084): java.lang.NullPointerException
08-06 09:29:27.708: E/AndroidRuntime(3084):     at com.sit.loco.frgment.ContactFragment.onCreateView(ContactFragment.java:60)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.View.measure(View.java:16497)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.View.measure(View.java:16497)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.View.measure(View.java:16497)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.View.measure(View.java:16497)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.View.measure(View.java:16497)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.Choreographer.doFrame(Choreographer.java:544)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.os.Handler.handleCallback(Handler.java:733)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.os.Handler.dispatchMessage(Handler.java:95)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.os.Looper.loop(Looper.java:136)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at android.app.ActivityThread.main(ActivityThread.java:5017)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at java.lang.reflect.Method.invokeNative(Native Method)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at java.lang.reflect.Method.invoke(Method.java:515)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-06 09:29:27.708: E/AndroidRuntime(3084):     at dalvik.system.NativeStart.main(Native Method)

ContactFragment.java:

public class ContactFragment extends BaseFragment {

    TextView textView1, textView2, textView3, textView4, textView5, textView6,
            textView7, textView8, textView9;
    EditText editText1, editText2, editText3, editText4;
    Button button1;
    private View view;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.layout_contact, null);



        textView1 = (TextView) view.findViewById(R.id.textView1);
        textView2 = (TextView) view.findViewById(R.id.textView2);
        textView3 = (TextView) view.findViewById(R.id.textView3);
        textView4 = (TextView) view.findViewById(R.id.textView4);
        textView5 = (TextView) view.findViewById(R.id.textView5);
        textView6 = (TextView) view.findViewById(R.id.textView6);
        textView7 = (TextView) view.findViewById(R.id.textView7);
        textView8 = (TextView) view.findViewById(R.id.textView8);
        textView9 = (TextView) view.findViewById(R.id.textView9);

        editText1 = (EditText) view.findViewById(R.id.editText1);
        editText2 = (EditText) view.findViewById(R.id.editText2);
        editText3 = (EditText) view.findViewById(R.id.editText3);
        editText4 = (EditText) view.findViewById(R.id.editText4);

        button1 = (Button) view.findViewById(R.id.button1);


        view.findViewById(R.id.inquiry_send).setOnClickListener(
                new OnClickListener() {  ---->Error occurred at this line belong to the reference id `inquiry.xml`

                    @Override
                    public void onClick(View v) {

                        String inqName = editText1.getText().toString();
                        String inqMail = editText2.getText().toString();
                        String inqSub = editText3.getText().toString();
                        String inqMsg = editText4.getText().toString();

                        // Mail Check
                        boolean isValidMail = validEmail(inqMail);
                        boolean isValid = true;

                        if (inqName.length() <= 0) {
                            editText1.setError("Enter Nmae");
                            isValid = false;
                        }

                        if (!isValidMail) {
                            editText2.setError("Not valid Email");
                            isValid = false;
                        }

                        if (inqSub.length() <= 0) {
                            editText3.setError("Enter Subject");
                            isValid = false;
                        }

                        if (inqMsg.length() <= 0) {
                            editText4.setError("Enter Message");
                            isValid = false;
                        }

                        if (isValid) {
                            sendEnquiry(inqName, inqMail, inqSub, inqMsg);
                        }
                    }

                });

        String someContactNum = "0091 8136864010";
        textView8.setText(someContactNum);

        String secondContactNum = "0091 8136894010";
        textView9.setText(secondContactNum);


        return view;
    }

    }

inquiry.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/app_theme_bg"
    android:orientation="vertical" >
     .
     .
     .
<ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="5dp"
        android:scrollbars="none" >
         .
         .
         .
 <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp" >
                .
                .
                .
            <TextView
                android:id="@+id/inquiry_send"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="5dp"
                android:background="@drawable/more_item_click"
                android:padding="10dp"
                android:text="Send"
                android:textColor="#FFFFFF"
                android:textSize="16sp" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>

我不知道如何解决这些问题。任何人都可以帮助我。谢谢。

2 个答案:

答案 0 :(得分:1)

view.findViewById(R.id.inquiry_send).setOnClickListener...

您的片段正在膨胀的布局中没有ID为inquiry_send的视图。 因此findViewById返回null,而setOnClickListener会抛出NullPointerException

答案 1 :(得分:0)

您已设置layout_contact.xml

view = inflater.inflate(R.layout.layout_contact, null);

并访问 inquiry.xml 的视图,了解例外

的原因

删除

view.findViewById(R.id.inquiry_send).setOnClickListener(
                new OnClickListener() { 
.
.
.});

并在Button上设置Click事件  喜欢

button1..setOnClickListener(
                new OnClickListener() {
.
.
.
}):