我有一个对话框首选项,上面有一个按钮,我想打开另一个活动。当该活动完成后,我希望对话框更新文本视图(在对话框中),其中包含从活动中收集的信息。
换句话说: 偏好屏幕 - >对话框偏好 - >对话 - >按钮点击事件 - >活性
我曾经有一个正常的活动调用活动(Activity - > Button click - > Activity)所以我可以使用startactivityforresult,然后从“onactivityresult”调用我的syncgui函数。可悲的是,Dialog首选项不是一个活动,因此只能使用startactivity(来自上下文),而不是startactivityforresult(来自活动)。
有没有其他方法可以告诉我的对话框,它启动的活动已完成,是否可以更新textview?这是原始功能
旧的父母活动:
public void onClick(View v) {
if(v == mSimModeBrowse) {
Intent i = new Intent("com.shared.FileChooser");
i.putExtra("com.shared.FileChooser.EXTRA_PATH", vsbPath);
i.putExtra("com.shared.FileChooser.EXTRA_EXTENSIONS", vsbExtensions);
startActivityForResult(i,0);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
final String file = data.getExtras().getString("com.shared.FileChooser.EXTRA_RESULT");
mSimModePath.setText(file);
}
}
来自filechooser(儿童活动)的:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
File f = new File(path + "/" + files.get(position));
Intent i = new Intent();
i.putExtra(EXTRA_RESULT,f.getAbsolutePath());
setResult(RESULT_OK,i);
finish();
}
答案 0 :(得分:0)
您是否尝试过使用:
runOnUiThread(new Runnable() {
public void run()
{
Intent i = new Intent("com.shared.FileChooser");
i.putExtra("com.shared.FileChooser.EXTRA_PATH", vsbPath);
i.putExtra("com.shared.FileChooser.EXTRA_EXTENSIONS", vsbExtensions);
startActivityForResult(i,0);
}
});
在Dialog的onClick事件中?这应该使它在Activity的UI线程上运行。