0

4つのタブを持つTabHostアプリケーションがあります。

タブ1リストA>リストB>表示

タブ2カメラを起動してフラッシュするカメラアクティビティonCreate

タブ3リストC>表示

タブ4ビューD>ビューE

そのため、アプリを最初に起動したときに、問題なくスタックを行き来するさまざまなタブに移動できます。しかし、タブ2(カメラタブ)を開始し、そこから他のタブに移動してスタックを下に移動すると、タブ2(つまり、リストB、戻るボタンを押すと、リストAに戻ってもカメラが起動します)...そしてもう一度タブ2に移動すると、アプリがクラッシュします(申し訳ありませんが、Androidカメラで問題が発生しました...など)

誰かが問題が何であるか教えてもらえますか?以下は私のTabHostアクティビティです

package com.myapp.appname;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TextView;
import android.view.Window;


public class MainActivity extends TabActivity {
    /** Called when the activity is first created. */

    private TabHost tabHost;
@Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(null);

    setContentView(R.layout.main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.top_titlebar);
    setTabs();

}

private void setTabs() {
    tabHost = getTabHost();

    listTab(R.string.tab_1, R.drawable.ic_tab_1);
    cameraTab(R.string.tab_2, R.drawable.ic_tab_2);
    list2Tab(R.string.tab_3, R.drawable.ic_tab_3);
    viewTab(R.string.tab_4, R.drawable.ic_tab_4);
}

private void listTab(int labelId, int drawableId) {
    Intent intent = new Intent(this,ListActivity.class);    
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);     

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);

    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setText(labelId);
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);
}
private void cameraTab(int labelId, int drawableId) {

    Intent intent = new Intent(this,CameraActivity.class);  
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);     

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);

    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setText(labelId);
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);
}
private void list2Tab(int labelId, int drawableId) {
    Intent intent = new Intent(this,List2Activity.class);   
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);     

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);

    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setText(labelId);
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);
}
private void viewTab(int labelId, int drawableId) {
    Intent intent = new Intent(this,ViewActivity.class);    
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);     

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);

    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setText(labelId);
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);
}

}

4

1 に答える 1

1

問題はタブホストではなく、カメラにあると思います。にあるコードを に移動してみてonCreateくださいonResume。また、別のタブに移動するときにカメラを解放することについて心配する必要があります。

于 2012-09-12T07:53:20.580 に答える