2012-01-21 6 views
0

私はこの問題の簡単な解決策を探していましたが、見つからなかったので、ここに行きます:tabHostからIntent.ACTION_PICKを呼び出し、onActivityResultに戻る - どのように?

私は1つのwebviewを制御するタブホストを持つアプリケーションを持っています。タブ1が押された場合、私はwebviewなどでjavascript呼び出しを行い、それがこの単純なアプリケーションの内容を制御する方法です。

今、イメージ/ビデオギャラリーを立ち上げていくつかのメディアを選びたいと思っていますが、これは頭痛の原因になります。それは始まったが、私がいくつかのメディアを選んだときに、アプリはただちに閉じる(強制終了はなく、ただ消える)。

私はアプリケーションにonActivityResultメソッドを追加しましたが、呼び出されていないため、その理由がわかりません。これはあなたの問題で

mTabHost = getTabHost(); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("Tab1", getResources().getDrawable(R.drawable.iphone)).setContent(R.id.webview)); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Tab2", getResources().getDrawable(R.drawable.about)).setContent(R.id.webview)); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("Tab3", getResources().getDrawable(R.drawable.events)).setContent(R.id.webview)); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test4").setIndicator("Tab4", getResources().getDrawable(R.drawable.free)).setContent(R.id.webview));  
    mTabHost.addTab(mTabHost.newTabSpec("tab_test5").setIndicator("Tab5", getResources().getDrawable(R.drawable.video)).setContent(R.id.webview)); 
    mTabHost.getCurrentView().setVisibility(View.VISIBLE); 

    mTabHost.setOnTabChangedListener(new OnTabChangeListener() { 
     public void onTabChanged(String arg0) {   
      if(mTabHost.getCurrentTab() == 0) 
      { 
       Log.i("***Selected Tab", "Im currently in tab with index::" + mTabHost.getCurrentTab()); 
       side1(mWebView); 
      } 
      if(mTabHost.getCurrentTab() == 1) 
      { 
       Log.i("***Selected Tab", "Im currently in tab with index::" + mTabHost.getCurrentTab()); 
       side2(mWebView); 
      } 
      if(mTabHost.getCurrentTab() == 2) 
      { 
       Log.i("***Selected Tab", "Im currently in tab with index::" + mTabHost.getCurrentTab()); 
       side3(mWebView); 
      } 
      if(mTabHost.getCurrentTab() == 3) 
      { 
       Log.i("***Selected Tab", "Im currently in tab with index::" + mTabHost.getCurrentTab()); 
       side4(mWebView); 
      } 
      if(mTabHost.getCurrentTab() == 4) 
      { 
       Log.i("***Selected Tab", "Im currently in tab with index::" + mTabHost.getCurrentTab()); 
       side5(mWebView); 
       openStuff(); 
      } 
     }  
    });  



public void openStuff() 
{ 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 

    startActivityForResult(photoPickerIntent, 1); 

} 


protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case 1: 
     if(resultCode == RESULT_OK){ 
      Uri selectedImage = imageReturnedIntent.getData(); 
      String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

      Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String filePath = cursor.getString(columnIndex); 
      cursor.close(); 

      Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath); 
     } 
    } 
} 
+0

あなたがスイッチにif文のあなたのチェーンを変換する必要があります。 – JoxTraex

答えて

0

あなたの代わりにonActivityResultのonResume()メソッドにコードを記述する必要があります。

これは私のコードの一部(すべてが同じアクティビティクラスである)です。プロペアロジックを管理するには、各タブでフラグを維持し、すべてに対してonResumeメソッドを書き込む必要があります。
例:

@Override 
    protected void onResume() {<br> 
      // TODO Auto-generated method stub<br> 
      super.onResume();<br> 
    } 

私はuが活動lifecycleを知っていると思う:

steps : onCreate() - onDestroy()<br> 
onStart()/onRestart() - onStop()<br> 
onResume() - onPause() 
+0

例を挙げてください。私は従いません。 –

+0

onResumeメソッドにブレークポイントを設定しますが、イメージを選択した後にコードはonResumeに戻りません。 –

+0

あなたは何を言う?実際には何が欲しいのですか? –

関連する問題