gpt4 book ai didi

android - 如何从另一个 Activity 或另一个线程触摸 EditTextPrefences

转载 作者:太空宇宙 更新时间:2023-11-03 10:36:12 25 4
gpt4 key购买 nike

我有一个存储名称的设置 Activity ,通过更改名称,它必须首先将其发送到我的服务器,如果它在服务器中的存储成功,那么它应该在我的 EditTextPreference 的摘要中设置。

一切正常,但最后我无法触摸 EditTextPreference 来设置名称。

此方法在设置 Activity 中,但从 AsyncTaskonPostExecute 调用

  public void setNewSetting(Activity activity) {
EditTextPreference editTextPreference = (EditTextPreference) UserSettingActivity.this.findPreference(activity.getString(R.string.pref_name_key));
name = sharedPreferences.getString(activity.getString(R.string.pref_name_key), "");
editTextPreference.setSummary(name);
}

Activity 是我传递给 AsyncTask 然后传递给方法的设置 Activity 。

我的问题在这里,给我一个 nullPoiterException for EditTextPreferences

抱歉我的英语不好。并提前致谢。

最佳答案

方法一:

如果 Activity 仍在后台,将您的 context 传递给 AsyncTask 并创建您的 Settings Activity 的实例。

SettingsActivity settingsActivity = (SettingsActivity) context;

然后,调用onPostExecute()中的方法

settingsActivity.setNewSetting();

并且,在您的 SettingsActivity 中使用您的 setNewSetting() 方法。它应该是公开的,并对空值进行一些检查。

方法二:

使用接口(interface)委托(delegate)。创建接口(interface):

 public interface TaskListener {
void onComplete();
}

执行时将其传递给 AsyncTask,例如:

new MyAsyncTask(params, params, new TaskListener() {

@Override
public void onComplete () {

// call setNewSetting from within SettingsActivity
}

}).execute();

您在 AsyncTask 构造函数中获取它:

public MyAsyncTask (String params, String param2, TaskListener taskListenerDelegate) {

this.taskListenerDelegate = taskListenerDelegate;
}

onPostExecute() 中调用它的 onComplete() :

taskListenerDelegate.onComplete();

方法三

不推荐,但您也可以尝试使用 startActivityForResult()。并且,监听 onActivityResult() 以应用更改。

关于android - 如何从另一个 Activity 或另一个线程触摸 EditTextPrefences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44110389/

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