Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 点击碎片中的按钮时出现NPE,然后应用程序崩溃_Android_Android Fragments_Android Button - Fatal编程技术网

Android 点击碎片中的按钮时出现NPE,然后应用程序崩溃

Android 点击碎片中的按钮时出现NPE,然后应用程序崩溃,android,android-fragments,android-button,Android,Android Fragments,Android Button,我正在从我的一个活动调用fragment,并且在fragment中有登录按钮。当我点击按钮的时候,它给了我NPE。我尝试了所有的排列和组合,使它工作。这是我的密码 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); setUs

我正在从我的一个活动调用fragment,并且在fragment中有登录按钮。当我点击按钮的时候,它给了我NPE。我尝试了所有的排列和组合,使它工作。这是我的密码

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

    super.onCreate(savedInstanceState);
    setUserVisibleHint(true);
    View rootView = inflater.inflate(R.layout.fragment1, container, false);
    Button button = (Button) rootView.findViewById(R.id.bt_login);
        button.setOnClickListener(new View.OnClickListener(){ 
         public void onClick(View v) {
             // Perform action on click
             EditText userName = (EditText)v.findViewById(R.id.userName);
                String user_Name = userName.getText().toString();
                EditText password = (EditText)v.findViewById(R.id.password);
                String user_Password = password.getText().toString();


                if(user_Name.length()== 0 || user_Password.length()== 0)
                {
                    Toast.makeText(getActivity(), "Please enter correct information", Toast.LENGTH_LONG).show();
                    //Toast.makeText(this,"Please enter correct information",Toast.LENGTH_LONG).show();
                    return;
                }   
            loginAction(user_Name,user_Password);   

         }
     });
     return rootView;
    }
堆栈跟踪

07-11 11:50:02.536: E/AndroidRuntime(429): FATAL EXCEPTION: main
07-11 11:50:02.536: E/AndroidRuntime(429): java.lang.NullPointerException
07-11 11:50:02.536: E/AndroidRuntime(429):  at com.androidbegin.sidemenututorial.Fragment1$1.onClick(Fragment1.java:46)
07-11 11:50:02.536: E/AndroidRuntime(429):  at android.view.View.performClick(View.java:2408)
07-11 11:50:02.536: E/AndroidRuntime(429):  at android.view.View$PerformClick.run(View.java:8816)
07-11 11:50:02.536: E/AndroidRuntime(429):  at android.os.Handler.handleCallback(Handler.java:587)
07-11 11:50:02.536: E/AndroidRuntime(429):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 11:50:02.536: E/AndroidRuntime(429):  at android.os.Looper.loop(Looper.java:123)
07-11 11:50:02.536: E/AndroidRuntime(429):  at android.app.ActivityThread.main(ActivityThread.java:4627)
07-11 11:50:02.536: E/AndroidRuntime(429):  at java.lang.reflect.Method.invokeNative(Native Method)
07-11 11:50:02.536: E/AndroidRuntime(429):  at java.lang.reflect.Method.invoke(Method.java:521)
07-11 11:50:02.536: E/AndroidRuntime(429):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-11 11:50:02.536: E/AndroidRuntime(429):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-11 11:50:02.536: E/AndroidRuntime(429):  at dalvik.system.NativeStart.main(Native Method)

您应该使用rootView来扩大视图

EditText userName = (EditText)rootView.findViewById(R.id.userName);

视图
v
是您单击的单个视图,而不是布局,因此您不应该调用
v.findViewById(…)
。试一试

EditText userName = (EditText)findViewById(R.id.userName);
String user_Name = userName.getText().toString();
EditText password = (EditText)findViewById(R.id.password);

您应该使用视图对象(rootview)来初始化视图

EditText userName,password; // delcare variables as class member.
View rootView = inflater.inflate(R.layout.fragment1, container, false);
userName = (EditText)rootview.findViewById(R.id.userName);
password = (EditText)rootview.findViewById(R.id.password);
此外,也不需要每次单击按钮时初始化视图

将初始化按钮移到外部,然后单击