2012-06-14 3 views
0

대화 상자 환경 설정에 다른 활동을 열기를 원하는 버튼이 있습니다. 해당 액티비티가 완료되면 대화 상자에서 텍스트 뷰를 액티비티에서 수집 한 정보로 업데이트해야합니다. 즉dialogpreference (비 활동)에서 시작을위한 시작 활성화

: -> 대화 환경 설정 -> 대화 -> 버튼 클릭 이벤트 - 기본 설정 화면> 활동

내가 전화 활동 (활동을 정상적인 활동을하는 데 사용 -> 버튼 클릭 -> 활동) 그래서 나는 startactivityforresult를 사용할 수 있고, "onactivityresult"에서 나의 syncgui 함수를 호출한다. 안타깝게도 대화 상자 환경 설정은 활동이 아니므로 시작 활동 (컨텍스트에서 시작) 만 사용할 수 있으며 시작 활동 (활동에서)에는 사용할 수 없습니다.

대화 상자에 시작된 활동이 완료되었으며 텍스트 뷰를 업데이트 할 수있는 다른 방법이 있습니까? 여기에 원래의 기능은

올드 부모 활동 filechooser에서

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

(어린이 활동) :

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 내부 :

@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

이 사용 해봤 행사? 이로 인해 액티비티의 UI 스레드에서 실행되어야합니다.

+0

대화 상자가 활동이 아니므로 runOnUiThread도 사용할 수 없습니다. 같은 이유로 나는 startactivityforresult를 사용할 수 없습니다. –

+0

대화 상자가 액티비티 안에 생성 되었다면 대화 상자를 사용할 수 있어야합니다. 그러나 대화 상자에 별도의 클래스를 사용하는 것처럼 들릴 수는 없으므로 대화 상자 클래스에 변수로 Activity를 전달하고이를 통해 runOnUiThread (IE)를 호출해야합니다. mActivity.runOnUiThread – Guardanis

+1

대화 상자는 대화 상자 참조이므로 생성자를 변경할 수 없습니다. 어쨌든, 나는 환경 설정 화면에서 호출 한 dialogpreference의 함수를 작성하여 작업 할 수있는 활동을 전달했습니다. 아주 좋은 해결 방법은 아니지만 일을 끝내게됩니다. 나는 다른 사람들을 위해 일할 것이라고 추측하고 있기 때문에 당신의 대답을 정확하게 표시하고 있습니다. –

관련 문제