从tabHost调用Intent.ACTION_PICK并返回onActivityResult - 如何?

时间:2012-01-21 15:01:17

标签: android android-intent android-tabhost

我一直在寻找一个解决这个问题的简单方法,但还是找不到一个,所以这里有:

我有一个带有tabhost的应用程序,用于控制单个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);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在您的问题中,您必须使用onResume()方法而不是onActivityResult编写代码。对于管理规范逻辑,您必须在每个选项卡中维护标记并为所有选项写入onResume方法 例如:

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

我想你知道活动lifecycle

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