2011-07-13 5 views
2

こんにちは私はアクティビティのグリッドメニューを作っています。問題は、特定のイメージをクリックすると、他のインテントを開くべきであり、エラーを出すことも、他のインテントを開くこともないということです。親切のAndroidManifest.xmlにbないにもグリッドメニュー内の別のインテントを開き、それらの間のナビゲーション

public class Mood extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mood); 

     GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(this)); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       switch (position) { 
       case 0:  
        Intent intent = new Intent(v.getContext(),a.class); 
         startActivity(intent); 
       break; 

       case 1:  
        Intent intent4 = new Intent(v.getContext(),b.class); 
         startActivity(intent4); 
       break; 



       default:  
       break; 
      } 

     } 


     }); 
    } 

    public class ImageAdapter extends BaseAdapter { 
     private Context mContext; 

     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return mThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     // create a new ImageView for each item referenced by the Adapter 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View grid; 

      if (convertView == null) { // if it's not recycled, initialize some 
       // attributes 
       grid = new View(mContext); 
       LayoutInflater inflater = getLayoutInflater(); 
       grid = inflater.inflate(R.layout.moodcus, parent, false); 

      } else { 
       grid = (View) convertView; 

      } 
      ImageView imageView = (ImageView) grid.findViewById(R.id.imgview); 
      TextView textView = (TextView) grid.findViewById(R.id.txtview); 
      imageView.setImageResource(mThumbIds[position]); 
      textView.setText(mMoodnames[position]); 
      return grid; 
     } 

     // references to our images 
     private Integer[] mThumbIds = { R.drawable.icon, 
       R.drawable.icon }; 

     private String[] mMoodnames = { "Angry", "Bored"}; 
    } 


} 

XMLです

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <ImageView android:id="@+id/imgview" android:layout_width="60dip" 
     android:layout_height="60dip" android:layout_gravity="center" /> 


    <TextView android:id="@+id/txtview" android:layout_width="wrap_content" 
     android:textColor="#ffffff" android:layout_height="wrap_content" 
     android:layout_gravity="center" /> 

</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?> 
<GridView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/gridview" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="5dp" 
android:verticalSpacing="5dp" 
android:horizontalSpacing="10dp" 
android:numColumns="auto_fit" 
android:columnWidth="80dp" 
android:stretchMode="columnWidth" 
android:gravity="center_horizontal" 
    android:scaleType="fitXY" 
android:background="@drawable/ac" 
/> 

logcat

07-13 05:16:17.642: ERROR/AndroidRuntime(28966): Uncaught handler: thread main exiting due to uncaught exception 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966): android.content.ActivityNotFoundException: Unable to find explicit activity class {Dynamicgrid.test/Dynamicgrid.test.a}; have you declared this activity in your AndroidManifest.xml? 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.app.Activity.startActivityForResult(Activity.java:2789) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.app.Activity.startActivity(Activity.java:2895) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at Dynamicgrid.test.Mood$1.onItemClick(Mood.java:39) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.widget.AbsListView.onKeyUp(AbsListView.java:1757) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.widget.GridView.commonKey(GridView.java:1470) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.widget.GridView.onKeyUp(GridView.java:1382) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.KeyEvent.dispatch(KeyEvent.java:1249) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.View.dispatchKeyEvent(View.java:3683) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:758) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:760) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:760) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:760) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1691) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1111) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.app.Activity.dispatchKeyEvent(Activity.java:2045) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1667) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2390) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2360) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1658) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.os.Looper.loop(Looper.java:123) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at android.app.ActivityThread.main(ActivityThread.java:4595) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
07-13 05:16:17.782: ERROR/AndroidRuntime(28966):  at dalvik.system.NativeStart.main(Native Method) 
+1

AndroidManifest.xmlにアクティビティ 'a'を宣言します。それは –

+0

あなたの懸念のために@あなたの懸念のために感謝した両方のとbが宣言されている – umar

+1

面白い!、この例外はあなたがそれをしていない場合にのみ、あなたが投稿したlogcatも示唆しています。 –

答えて

2

宣言活動aを導きますRES /メニューフォルダでのthatsそれ

メニューからonother活動を開くため、このファイルを置くyourmenu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/menuitem1" 
     android:title="Option1" 
     android:orderInCategory="1" 
     android:icon="@drawable/_icon1"> 
    </item> 
    <item 
     android:id="@+id/menuitem2" 
     android:title="Option2" 
     android:orderInCategory="2" 
     android:icon="@drawable/_icon2"> 
    </item> 
    <item 
     android:id="@+id/menuitem3" 
     android:title="Option3" 
     android:orderInCategory="3" 
     android:icon="@drawable/_icon3"> 
    </item> 
</menu> 

...

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // SELECTING MENU FROM RESOURCE 
    getMenuInflater().inflate(R.menu.ypurmenu, menu); 

    // RETURN TRUE TO DISPLAY MENU 
    return true; 

} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if(item.getTitle().equals("Option1")){ 

     startActivity(new Intent(getApplicationContext(), AnotherActivityX.class)); // It Can be your GridViewActivity 
     finish(); 

    } 
    else if(item.getTitle().equals("Option2")){ 

     startActivity(new Intent(getApplicationContext(), AnotherActivityY.class)); 
     finish(); 

    } 
    else if(item.getTitle().equals("Option3")){ 

     startActivity(new Intent(getApplicationContext(), AnotherActivityZ.class)); 
     finish(); 

    } 

    return super.onOptionsItemSelected(item); 

} 

それとも、時にユーザーを押して直接任意の活動を開きたい場合メニューボタンは単純な解決策よりも簡単です...

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     startActivity(new Intent(this, AnyActivity.class));//Also you can write finish() here if if you want to back at previous activity 
     return super.onCreateOptionsMenu(menu); 
    } 
+1

電話メニューボタン – umar

+0

を押すことによって、アクティビティaからグリッドメニューのアクティビティに戻ってくることを提案します。これは私が推測したいものです。同様の解決策を見つける他の人を助けるためにあなたの質問を編集できます:) –

+0

私はこれをアクティビティaのコードとそのオープンポップアップメニュー(opt1、opt2、opt3)は、メニューボタンをクリックすると、他のアクティビティでポップアップメニューを開くのではなく、メインアクティビティに戻るはずです。申し訳ありません、私はあなたに苦労しています。 – umar

関連する問題