gpt4 book ai didi

android - 单击以更新编辑文本字段时应用程序崩溃(从 TextWatcher 崩溃?)

转载 作者:行者123 更新时间:2023-11-30 02:38:55 25 4
gpt4 key购买 nike

当用户单击编辑文本字段来更新条目时,我的应用程序崩溃了。但是,当该字段为空白并且是第一次填写时,它不会崩溃。

我相信我已经将问题缩小到错误代码(在下面的 textwatcher 代码中)——但是我看不出我做错了什么。查看堆栈跟踪后,我更加困惑了——它似乎指向一个丢失的可绘制对象——但我看不出这两者是如何相关的。堆栈跟踪也在下方。

如有任何帮助,我们将不胜感激!如果您能提供代码示例来说明我应该尝试什么而不仅仅是概念,那将有所帮助。提前致谢

savesession.java 中的代码

add_name.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void afterTextChanged(Editable s) {
Is_Valid_Person_Name(add_name);
}
});

/* 为响应此代码的评论而复制 */

 public void Is_Valid_Person_Name(EditText edt) throws NumberFormatException 
{
if (edt.getText().toString().length() <= 0)
{
edt.setError("Accept Alphabets Only.");
valid_name = null;
} else if (!edt.getText().toString().matches("[a-zA-Z ]+"))
{
edt.setError("Accept Alphabets Only.");
valid_name = null;
} else {
valid_name = edt.getText().toString();
}
}

堆栈跟踪的相关部分:

09-27 00:09:11.295  13910-13910/com.yodalabs.buddhabreath E/InputEventReceiver﹕ Exception    dispatching input event.
09-27 00:09:11.295 13910-13910/com.yodalabs.buddhabreath D/AndroidRuntime﹕ Shutting down VM
09-27 00:09:11.305 13910-13910/com.yodalabs.buddhabreath W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41841898)
09-27 00:09:11.345 13910-13910/com.yodalabs.buddhabreath E/AndroidRuntime﹕ FATAL EXCEPTION: main android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f090001 a=1 r=0x7f090001}
at android.content.res.Resources.loadDrawable(Resources.java:2946)
at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
at android.widget.PopupWindow.<init>(PopupWindow.java:206)
at android.widget.PopupWindow.<init>(PopupWindow.java:190)

保存 session .xml

<EditText
android:id="@+id/add_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:inputType="textPersonName" >
<requestFocus />
</EditText>

<EditText
android:id="@+id/add_comment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Comment"
android:inputType="textPersonName">
</EditText>

样式.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:itemTextAppearance">@style/your_new_text_appearance</item>
<item name="android:popupBackground">@style/your_new_text_appearance</item>

<item name="android:popupMenuStyle">@style/your_new_text_appearance</item>
<item name="android:popupWindowStyle">@style/your_new_text_appearance</item>

</style>


<style name="your_new_text_appearance">
<item name="android:textColor">#FFFFFF</item>
<item name="android:textSize">16dp</item>
<item name="android:popupBackground">@drawable/rounded_corner_popupmenu</item>
<item name="android:background">@color/purple06</item>
</style>


<color name="blue01">#0099CC</color>
<color name="blue02">#079DD0</color>

设置.java

// In OnCreate 
CyclepopupMenu = new PopupMenu(this, findViewById(R.id.settings_breathcycle));
CyclepopupMenu.getMenu().add(Menu.NONE, 11, Menu.NONE, "5,0,5,0");
CyclepopupMenu.getMenu().add(Menu.NONE, 12, Menu.NONE, "5,3,5,3 (default)");
CyclepopupMenu.getMenu().add(Menu.NONE, 13, Menu.NONE, "5,5,5,5");
CyclepopupMenu.getMenu().add(Menu.NONE, 14, Menu.NONE, "7,5,7,5");
CyclepopupMenu.getMenu().add(Menu.NONE, 15, Menu.NONE, "9,5,9,5");
CyclepopupMenu.getMenu().add(Menu.NONE, 16, Menu.NONE, "12,5,12,5");
// In body
public void showMenuCycle(View view){
CyclepopupMenu.show();
}

最佳答案

您好,请使用此代码更新您的 Is_Valid_Person_Name 方法代码。它真的可以帮助你。

public void Is_Valid_Person_Name(EditText edt) throws NumberFormatException 
{
Drawable warning = (Drawable)getResources().getDrawable(R.drawable.ic_launcher);
warning.setBounds(new Rect(0, 0, warning.getIntrinsicWidth(), warning.getIntrinsicHeight()));
if (edt.getText().toString().length() <= 0)
{
edt.setError("Accept Alphabets Only.",warning);
valid_name = null;
}
else if (!edt.getText().toString().matches("[a-zA-Z ]+"))
{
edt.setError("Accept Alphabets Only.",warning);
valid_name = null;
} else {
valid_name = edt.getText().toString();
}
}

根据您的需要更改可绘制图标。

关于android - 单击以更新编辑文本字段时应用程序崩溃(从 TextWatcher 崩溃?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com