【发布时间】:2014-11-10 09:45:23
【问题描述】:
我正在尝试创建一个弹出窗口,我可以在其中更改从按下按钮到显示图像之间的延迟。我已经阅读了 edittext 和 textwatcher 应该解决的问题,但我不断收到 NullPointerExeption。
这是您在设置中尝试设置延迟的部分。
else if(id == R.id.action_settings){
LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View setpopView = layoutInflater.inflate(R.layout.setpop, null);
final PopupWindow setpopWindow = new PopupWindow(setpopView,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
setpopWindow.setFocusable(true);
setpopWindow.update();
EditText delayTime = (EditText) setpopView.findViewById(R.id.editText1);
delayTime.setText("" + timerTime);
timerTime = Integer.parseInt(delayTime.getText().toString());
delayTime.addTextChangedListener(new TextWatcher() {
EditText delayTime = (EditText) findViewById(R.id.editText1);
public void afterTextChanged(Editable s) {
delayTime.setText("" + timerTime);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
//TODO Auto-generated method stub
}
});
((TextView)setpopWindow.getContentView().findViewById(R.id.textDelay2)).setText("Current delay: " + timerTime + "sec");
Button btnDismiss = (Button)setpopView.findViewById(R.id.setDismiss);
btnDismiss.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v){
//TODO Auto-generated method stub
setpopWindow.dismiss();
}
});
setpopWindow.showAsDropDown(btnDismiss, 50, 50);
}
xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:background="@android:color/black"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="230dp"
android:layout_height="300dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_margin="2dp"
android:background="@android:color/darker_gray"
android:orientation="vertical" >
<Button
android:id="@+id/setDismiss"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Back" />
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" Settings"
android:textSize="22sp" />
</RelativeLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/seekBar"
android:layout_centerHorizontal="true"
android:layout_marginTop="27dp"
android:text="" />
<TextView
android:id="@+id/textDelay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/relativeLayout1"
android:layout_below="@+id/relativeLayout1"
android:text="Set result delay (sec)" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textDelay"
android:layout_centerHorizontal="true"
android:ems="10"
android:inputType="number"
android:text="" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textDelay2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textDelay"
android:layout_below="@+id/editText1"
android:layout_marginTop="16dp"
android:text="" />
</RelativeLayout>
LogCat
11-10 03:30:00.776: E/AndroidRuntime(30751): FATAL EXCEPTION: main
11-10 03:30:00.776: E/AndroidRuntime(30751): Process: com.gerfort.gerfortrps, PID: 30751
11-10 03:30:00.776: E/AndroidRuntime(30751): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
11-10 03:30:00.776: E/AndroidRuntime(30751): at com.gerfort.gerfortrps.MainActivity$14.afterTextChanged(MainActivity.java:413)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.widget.TextView.sendAfterTextChanged(TextView.java:7472)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:9246)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:957)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:501)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:216)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:33)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.view.inputmethod.BaseInputConnection.deleteSurroundingText(BaseInputConnection.java:243)
11-10 03:30:00.776: E/AndroidRuntime(30751): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:382)
11-10 03:30:00.776: E/AndroidRuntime(30751): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.os.Handler.dispatchMessage(Handler.java:102)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.os.Looper.loop(Looper.java:135)
11-10 03:30:00.776: E/AndroidRuntime(30751): at android.app.ActivityThread.main(ActivityThread.java:5070)
11-10 03:30:00.776: E/AndroidRuntime(30751): at java.lang.reflect.Method.invoke(Native Method)
11-10 03:30:00.776: E/AndroidRuntime(30751): at java.lang.reflect.Method.invoke(Method.java:372)
11-10 03:30:00.776: E/AndroidRuntime(30751): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
11-10 03:30:00.776: E/AndroidRuntime(30751): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)
当我尝试编辑文本时,它总是崩溃。有任何想法吗?提前致谢!
【问题讨论】:
-
哦,顺便说一句,我对整体编程很陌生,所以有些事情对我来说并不明显:)
-
post
logcat从中我们可以看到错误在哪里 -
抱歉,忘记了。现在应该编辑它。
-
调试你的代码
timerTime是 null 并且不需要在 addTextChangedListener 中再次初始化EditText。 -
现在有一个我以前从未见过的错误。我什至没有时间查看错误是什么,因为 logcat 正在发送垃圾邮件“E/RichInputConnection(1362):无法连接到编辑器以检索文本。”我有时间看到的是关于分配内存的东西,程序只是冻结了一段时间然后退出,没有“应用程序名称已停止”弹出窗口。
标签: android nullpointerexception android-edittext popupwindow textwatcher