gpt4 book ai didi

android - Fragment 中 EditText 的值不刷新

转载 作者:行者123 更新时间:2023-11-29 00:16:07 25 4
gpt4 key购买 nike

我有一个非常简单的用例:

  • 我在 fragment 中定义了一个 Button 和一个 EditText。
  • 我已将该按钮操作绑定(bind)到 fragment Activity 中的一个方法。
  • 我想通过该方法更新 EditText 的文本

我的 Action 方法( fragment 中)如下:

public void notifyLaterAction(View view) {
EditText editText = (EditText)findViewById(R.id.nextNotificationTime);
editText.setText("Gotcha");
String theText = editText.getText().toString();
Log.d(LOG_PATH, theText);
}

运行后,文本为“Gotcha”,但 UI 没有更新。谁能告诉我这是怎么回事?

编辑:更新了附加代码

这是 fragment 中定义的按钮:

<Button
android:id="@+id/notifyLaterButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|top"
android:onClick="notifyLaterAction"
android:text="Ask Me Later" />

这是完整的堆栈跟踪:

Caused by: java.lang.NoSuchMethodException: notifyLaterAction [class android.view.View]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getMethod(Class.java:857)
at android.view.View$1.onClick(View.java:3963)
at android.view.View.performClick(View.java:4654)
at android.view.View$PerformClick.run(View.java:19438)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodException: notifyLaterAction [class android.view.View]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getMethod(Class.java:857)
at android.view.View$1.onClick(View.java:3963)
at android.view.View.performClick(View.java:4654)
at android.view.View$PerformClick.run(View.java:19438)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)

最佳答案

如果您有来自 xml 的绑定(bind)方法,那么您需要从具有该布局的 Activity 类 调用它。

编辑:之前我完全错了,很抱歉把你引错了方向。

1.)如果你在xml中定义了onClick,那么它必须在Activity中。

2.) 即使您决定在 Activity 中使用 notifyLaterAction(View mView) 方法。您无法访问

EditText editText = (EditText) mView.findViewById(R.id.nextNotificationTime);

这将始终为 null,因为 mView 仅用于 Button View ,因此您不能使用 seText 和 getText 方法。

3.) 我们在这里唯一的选择是在您的 fragment 中声明和初始化 EditText 和 Button,并对按钮单击事件使用 setOnClickListener 方法,并在其中进行编辑文本更改。

关于android - Fragment 中 EditText 的值不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26819233/

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