1

別のアクティビティを開きたいボタンがあるダイアログ設定があります。そのアクティビティが完了したら、ダイアログで、アクティビティから収集された情報で (ダイアログ内の) テキストビューを更新する必要があります。

つまり: 設定画面 --> ダイアログ設定 --> ダイアログ --> ボタンクリックイベント --> アクティビティ

以前は通常のアクティビティでアクティビティを呼び出していました (アクティビティ --> ボタン クリック --> アクティビティ) ので、startactivityforresult を使用してから、"onactivityresult" から syncgui 関数を呼び出すことができました。悲しいことに、ダイアログ設定はアクティビティではないため、(アクティビティからの) startactivityforresult ではなく、(コンテキストからの) startactivity のみを使用できます。

ダイアログが開始したアクティビティが完了し、テキストビューを更新できることをダイアログに伝える他の方法はありますか? オリジナル機能はこちら

古い親アクティビティ:

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();
    }
4

1 に答える 1

1

使用してみましたか:

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);
    } 
 }); 

ダイアログの onClick イベント内ですか? これにより、Activity の UI スレッドで実行されるようになります。

于 2012-06-14T17:31:55.847 に答える