空对象引用上的 OnClickListener
OnClickListener on a null object reference
你好谁能帮我处理这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at de.kwietzorek.fulcrumwebview.MainActivity$AddServerFragment.onCreateView(MainActivity.java:141)
141 在 btn_back.setOnClickListener(new View.OnClickListener() {
片段:AddServerFragement
public class AddServerFragment extends Fragment
implements View.OnClickListener {
@Override
public void onClick(View view) {
}
public AddServerFragment(){
}
Button btn_back, btn_add;
EditText server_ip, server_name;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.add_ip, container, false);
server_ip = (EditText) findViewById(R.id.edit_server_address);
server_name = (EditText) findViewById(R.id.edit_server_name);
btn_back = (Button) findViewById(R.id.btn_back);
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
});
btn_add = (Button) findViewById(R.id.btn_add);
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String new_server_ip = null, new_server_name = null;
ArrayList<String> server_name_list = new ArrayList<String>();
ArrayList<String> server_ip_list = new ArrayList<String>();
new_server_ip = server_ip.getText().toString();
server_ip_list.add(new_server_ip);
new_server_name = server_name.getText().toString();
server_name_list.add(new_server_name);
}
});
return view;
}
}
替换
btn_back= (Button) findViewById(R.id.btn_back);
与
btn_back = (Button) view.findViewById(R.id.btn_back);
对您要启动的所有其他布局元素执行相同的操作。
原因是:由于您在 Fragment 中扩充了布局文件,因此您必须将所有 UI 元素引用到您在此处调用 "view" 的那个文件:
View view = inflater.inflate(R.layout.add_ip, container, false);
因此指令 "findViewById" 必须引用该视图。
您需要在您膨胀的视图中找到视图:
btn_back = (Button) view.findViewById(R.id.btn_back);
你好谁能帮我处理这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at de.kwietzorek.fulcrumwebview.MainActivity$AddServerFragment.onCreateView(MainActivity.java:141)
141 在 btn_back.setOnClickListener(new View.OnClickListener() {
片段:AddServerFragement
public class AddServerFragment extends Fragment
implements View.OnClickListener {
@Override
public void onClick(View view) {
}
public AddServerFragment(){
}
Button btn_back, btn_add;
EditText server_ip, server_name;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.add_ip, container, false);
server_ip = (EditText) findViewById(R.id.edit_server_address);
server_name = (EditText) findViewById(R.id.edit_server_name);
btn_back = (Button) findViewById(R.id.btn_back);
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
});
btn_add = (Button) findViewById(R.id.btn_add);
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String new_server_ip = null, new_server_name = null;
ArrayList<String> server_name_list = new ArrayList<String>();
ArrayList<String> server_ip_list = new ArrayList<String>();
new_server_ip = server_ip.getText().toString();
server_ip_list.add(new_server_ip);
new_server_name = server_name.getText().toString();
server_name_list.add(new_server_name);
}
});
return view;
}
}
替换
btn_back= (Button) findViewById(R.id.btn_back);
与
btn_back = (Button) view.findViewById(R.id.btn_back);
对您要启动的所有其他布局元素执行相同的操作。
原因是:由于您在 Fragment 中扩充了布局文件,因此您必须将所有 UI 元素引用到您在此处调用 "view" 的那个文件:
View view = inflater.inflate(R.layout.add_ip, container, false);
因此指令 "findViewById" 必须引用该视图。
您需要在您膨胀的视图中找到视图:
btn_back = (Button) view.findViewById(R.id.btn_back);