如何从另一个 activity 或另一个线程触摸 EditTextPrefences
How to touch EditTextPrefences from another activity or another thread
我有一个设置 Activity 存储名称,通过更改名称,它必须首先将其发送到我的服务器,如果它成功存储在服务器中,那么它应该在我的摘要中设置 EditTextPreference
。
一切正常,但最后我无法触摸 EditTextPreference
来设置名称。
此方法在设置 activity 中,但从 AsyncTask
的 onPostExecute
中调用
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
并创建您的设置实例 Activity.
SettingsActivity settingsActivity = (SettingsActivity) context;
然后,调用onPostExecute()
中的方法
settingsActivity.setNewSetting();
并且,在您的设置Activity 中设置您的 setNewSetting()
方法。它应该是 public 并检查空值。
方法二:
使用接口委托。创建接口:
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()
以应用更改。
我有一个设置 Activity 存储名称,通过更改名称,它必须首先将其发送到我的服务器,如果它成功存储在服务器中,那么它应该在我的摘要中设置 EditTextPreference
。
一切正常,但最后我无法触摸 EditTextPreference
来设置名称。
此方法在设置 activity 中,但从 AsyncTask
onPostExecute
中调用
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
并创建您的设置实例 Activity.
SettingsActivity settingsActivity = (SettingsActivity) context;
然后,调用onPostExecute()
settingsActivity.setNewSetting();
并且,在您的设置Activity 中设置您的 setNewSetting()
方法。它应该是 public 并检查空值。
方法二:
使用接口委托。创建接口:
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()
以应用更改。