Java NullPointerException:DialogAlert中的EditText
我在Java NullPointerException:DialogAlert中的EditText,java,android,nullpointerexception,dialog,android-edittext,Java,Android,Nullpointerexception,Dialog,Android Edittext,我在对话框alert中使用EditText得到了NullPointerException。我的代码如下所示: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s
对话框alert
中使用EditText
得到了NullPointerException
。我的代码如下所示:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WelcomeDialog();
}
public Dialog WelcomeDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Server");
builder.setMessage("Enter ADDRESS and PORT:");
// Get the layout inflater
LayoutInflater inflater = this.getLayoutInflater();
// Pass null as the parent view because its going in the dialog layout
View v = inflater.inflate(R.layout.dialog_welcome, null);
builder.setView(v);
// Use an EditText view to get user input.
final EditText input1 = new EditText(this);
input1.setId(address);
builder.setView(input1);
final EditText ETaddress = (EditText) v.findViewById(address);
final EditText input2 = new EditText(this);
input2.setId(port);
builder.setView(input2);
final EditText ETport = (EditText) v.findViewById(port);
builder.setView(v)
// Inflate and set the layout for the dialog
// Add action buttons
.setPositiveButton("connect", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// The NULLPOINTER is in this line:
String str1 = ETaddress.getText().toString();
((VariableHolder) getApplication()).setADDRESS(str1);
int str2 = Integer.parseInt(ETport.getText().toString());
((VariableHolder) getApplication()).setPORT(str2);
set = true;
}
});
builder.create().show();
return builder.create();
}
}
}
我怀疑问题就在这里(错误的声明或类似的东西):
…但我不知道怎么了。有什么想法吗
编辑:
以下是logcat输出:
> 01-06 19:40:28.241 4694-4694/com.example.console2
> E/AndroidRuntime﹕ FATAL EXCEPTION: main
> java.lang.NullPointerException
> at com.example.MainActivity$2.onClick(MainActivity.java:88)
> at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
> at android.os.Handler.dispatchMessage(Handler.java:99)
> at android.os.Looper.loop(Looper.java:137)
> at android.app.ActivityThread.main(ActivityThread.java:4611)
> at java.lang.reflect.Method.invokeNative(Native Method)
> at java.lang.reflect.Method.invoke(Method.java:511)
> at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
> at dalvik.system.NativeStart.main(Native Method)
该v视图不包含您的edittext,因此v.findViewById(地址)将仅返回null 试试这个
该v视图不包含您的编辑文本,因此v.findViewById(地址)将仅返回null 试试这个
如果你怀疑这是个问题,那就做下一步! 1移除所有最终修改器! 2在
setContentView(R.layout.activity_main)之后找到他们的视图代码>像这样
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText input1 = new (EditText)findViewById(R.id.yourEditTextId);
EditText ETaddress = (EditText)findViewById(R.id.yourEditTextId);
剩下的就做吧 如果你怀疑这是个问题,那就做下一个!
1移除所有最终修改器!
2在setContentView(R.layout.activity_main)之后找到他们的视图代码>像这样
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText input1 = new (EditText)findViewById(R.id.yourEditTextId);
EditText ETaddress = (EditText)findViewById(R.id.yourEditTextId);
剩下的就做吧 好吧,那是个愚蠢的错误。仅在地址前分别忘记了R.id
:
final EditText ETaddress = (EditText)v.findViewById(R.id.address); // R.id. !!!
好吧,那是个愚蠢的错误。仅在地址前分别忘记了R.id
:
final EditText ETaddress = (EditText)v.findViewById(R.id.address); // R.id. !!!
你能发布你的logcat错误跟踪吗?请添加崩溃日志。为什么你要多次使用builder.setView()
方法?以至于v视图不包含你的编辑文本。v、 findViewById(address)这将只返回null。需要一个日志猫,因为null可能出现在代码的每个地方,我认为这是在编辑文本阶段,只需发布日志猫!你能发布你的logcat错误跟踪吗?请添加崩溃日志。为什么你要多次使用builder.setView()
方法?以至于v视图不包含你的编辑文本。v、 findViewById(address)这将只返回null。需要一个日志猫,因为null可能出现在代码的每个地方,我认为这是在编辑文本阶段,只需发布日志猫!你能看到他正在运行时创建input1
,并使用充气器从另一个视图中提取ETaddress
?你的回答没有帮助。此外,删除final也不能防止崩溃,事实上,他不能在listeners方法中使用final。原因是不同的,我们不能在不看到logcat错误跟踪的情况下说任何事情。是的,确定它是错误的,这就是我发布此代码的原因,他只需要先找到视图,然后做他的事情扫描您看到他正在运行时创建input1
,并使用充气器从另一个视图提取ETaddress
?你的回答没有帮助。此外,删除final也不能防止崩溃,事实上,他不能在listeners方法中使用final。原因是不同的,我们不能不看到logcat错误跟踪就说任何事情。是的,确定它是错误的,这就是我发布此代码的原因,他只需要先找到视图,然后再做他的事情