2

2つのタブがあるタブホストがあります。1つは画像ギャラリー用で、もう1つはページを開くためのものです。独立してTabHostは正常に動作しますが、前のアクティビティからアクセスしたい場合、アプリがクラッシュします。誰かが問題が何であるか教えてもらえますか?私が何かを追加しなければならないのか、それとも私がしているのかは間違っています。別の方法があるか教えてください。私のコードを以下に示します。

public class DelhimapActivity extends TabActivity{

   TabHost tab;
   Intent intent;
   GridView grid;

   public void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      setContentView(R.layout.delhimap);
      tab = getTabHost();

      tab.addTab(tab.newTabSpec("tab1").setIndicator("Images").setContent(R.id.gridView1));
      tab.addTab(tab.newTabSpec("tab2").setIndicator("About").setContent(intent));
      grid = (GridView) findViewById(R.id.gridView1);
      grid.setAdapter(new ImageAdapter(this));
      intent.setClass(this, DelhiLay.class);
      startActivity(intent);

      tab.setCurrentTab(0);
   }

}

私のImageAdapter:

public class ImageAdapter extends BaseAdapter {
   private Context mContext;

   public ImageAdapter(Context c) {
      // TODO Auto-generated constructor stub
      mContext= c;
   }

   public int getCount() {
      // TODO Auto-generated method stub
      return mThumbIds.length;
   }

   public Object getItem(int position) {
      // TODO Auto-generated method stub
      return null;
   }

   public long getItemId(int position) {
      // TODO Auto-generated method stub
      return 0;
   }

   public View getView(int position, View convertView, ViewGroup parent) {
      // TODO Auto-generated method stub
      ImageView imageView;
      if (convertView == null) {  // if it's not recycled, initialize some attributes
         imageView = new ImageView(mContext);            

         imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
         imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
         imageView.setPadding(8, 8, 8, 8);

         //myButton.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL));

      } else {
         imageView = (ImageView) convertView;
      }

      imageView.setImageResource(mThumbIds[position]);
      return imageView;
   }

  // references to our images
  private Integer[] mThumbIds = {
        R.drawable.ben, R.drawable.brent,
        R.drawable.cean,
        R.drawable.charters,
        R.drawable.lynn,
        R.drawable.mark,
        R.drawable.paul,
        R.drawable.philip
  };
} 

そして、このような別のアクティビティからアクセスします。

public void onEnter(View v){

      prg = ProgressDialog.show(this, "", "Loading...");
      new Handler().postDelayed(new Runnable() {

            public void run() {
      Intent inta = new Intent(NewActivity.this,DelhimapActivity.class);
      NewActivity.this.startActivity(inta);
      NewActivity.this.finish();
            }
      },3000
      );
}

これは、TabHostを持つXMLです。

<?xml version="1.0" encoding="utf-8"?>


<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:tabStripEnabled="true">
        </TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <GridView
                android:id="@+id/gridView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:numColumns="3" >
            </GridView>
            <LinearLayout 
                android:id="@+id/linear"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            </LinearLayout>

        </FrameLayout>

    </LinearLayout>

これは、このアクティビティのLogCatです。

08-23 13:56:46.008: E/AndroidRuntime(365): FATAL EXCEPTION: main
**08-23 13:56:46.008: E/AndroidRuntime(365): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.delhicious.suryastra/com.delhicious.suryastra.DelhimapActivity}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'**
4

2 に答える 2

1

以下のリンクからコード例をダウンロードしてください。役立つ場合があります。

タブサンプル

于 2012-08-23T05:14:02.847 に答える
0

レイアウトファイル@+id/tabhostでで置き換えます。@android:id/tabhost

于 2012-08-23T08:56:10.567 に答える