Java 片段中的Onclick按钮方法

Java 片段中的Onclick按钮方法,java,android,Java,Android,我用android创建了一个简单的应用程序。我在导航抽屉中有一个用户配置文件。当选择抽屉中的地址选项时,打开该片段(例如:地址片段)。在那个布局中,我按下了保存按钮。单击保存按钮时,我希望验证所有字段。但是,当我从抽屉中选择该选项时,应用程序不幸停止 我的代码在这里: AddressFragment.java 导入android.support.v4.app.Fragment; 导入android.os.Bundle; 导入android.support.v4.app.FragmentActi

我用android创建了一个简单的应用程序。我在导航抽屉中有一个用户配置文件。当选择抽屉中的地址选项时,打开该片段(例如:地址片段)。在那个布局中,我按下了保存按钮。单击保存按钮时,我希望验证所有字段。但是,当我从抽屉中选择该选项时,应用程序不幸停止

我的代码在这里:

AddressFragment.java

导入android.support.v4.app.Fragment;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.AutoCompleteTextView;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
公共类AddressFragment扩展了片段{
编辑文本行2;
按钮地址;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u layout\u地址,容器,false);
addrsave=(按钮)getActivity().findviewbyd(R.id.addrsave);
//获取布局中AutoCompleteTextView的引用
AutoCompleteTextView textView=(AutoCompleteTextView)view.findViewById(R.id.city\u AutoCompleteTextView);
//获取字符串数组
字符串[]city=getResources().getStringArray(R.array.city);
//创建适配器并将其设置为AutoCompleteTextView
ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple\u list\u item\u 1,城市);
setAdapter(适配器);
addrsave.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串addr=line2.getText().toString();
如果(地址等于(“”){
Toast.makeText(getActivity().getApplicationContext(),“字段不能为空。”,Toast.LENGTH_SHORT).show();
}
}
});
返回视图;
}
}
更改此行

addrsave = (Button) getActivity().findViewById(R.id.addrsave);


您的
R.layout.fragment\u layout\u address
被分配给
view
,因此您必须使用
view
变量从布局中获取按钮。其次,还要初始化
line2
,一旦解决第一个问题,它将引发NPE异常(空指针)

更改此项:

addrsave = (Button) getActivity().findViewById(R.id.addrsave);
为此:

addrsave = (Button) view.findViewById(R.id.addrsave);
问题是您正在getActivity()上执行findViewById(),这将为您提供一个
null
。然后在其上设置
onClickListener
,将引发NullPointerException


希望有帮助!:)

我看不到您在哪里初始化了
第2行
? 因此,
line2
为空,这可能会导致异常

String addr = line2.getText().toString();

我认为您已经在片段中添加了按钮,并且正在尝试从活动中检索它。因此,将从getActivity()检索视图更改为如下视图

addrsave = (Button) getActivity().findViewById(R.id.addrsave);
用以下行替换上述内容

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

您错过了第38行中的line2视图初始化,您的按钮是add-in fragment XmlAlway initialize
line2
,一旦解决第一个问题,它将引发NPE异常
addrsave = (Button) view.findViewById(R.id.addrsave);