Проблема контекстного меню - как разрешить эти пункты меню? - PullRequest
3 голосов
/ 15 июля 2010

Я очень плохо знаком с Android.

Я пытаюсь создать раздутое контекстное меню в образце GridView, представленном на сайте разработчика Android.Затмение говорит мне, что упомянутые элементы не могут быть решены, если кто-то может помочь найти, где я кодировал s.th.неправильно, это было бы здорово, потому что я застрял на данный момент.Благодарю.

Я разместил весь свой код ниже.Я получаю сообщение об ошибке по адресу: if (item.getItemId() == R.id.menu_facebook) и других R.id.


Это файл ShareGalleryView.java:

 import android.app.Activity; 
 import android.content.Context; 
 import android.os.Bundle; 
 import android.view.ContextMenu; 
 import android.view.MenuInflater; 
 import android.view.MenuItem; 
 import android.view.View; 
 import android.view.ViewGroup; 
 import android.view.ContextMenu.ContextMenuInfo;
 import android.widget.BaseAdapter;
 import android.widget.GridView;
 import android.widget.ImageView;
 import android.widget.AdapterView.AdapterContextMenuInfo;

 public class ShareGalleryView extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videogrid);

        GridView vGrid=(GridView) findViewById(R.id.vgrid);
        registerForContextMenu(vGrid);
        vGrid.setAdapter(new VideoAdapter(this));
    }

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
      super.onCreateContextMenu(menu, v, menuInfo);
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.menu_gallery_share, menu);
    }

    public boolean onContextItemSelected (MenuItem item){
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        if (item.getItemId() == R.id.menu_facebook)
        {
         //TODO open fb
            return true;

        }
        else if (item.getItemId() == R.id.menu_youtube)
        {
            //TODO open youtube
            return true;

        }
        else if (item.getItemId() == R.id.menu_email)
        {
         //TODO open email
            return true;

        }
        else if (item.getItemId() == R.id.menu_bluetooth)
        {
            // TODO send via bluetooth
            return true;

        }
    }

    public class VideoAdapter extends BaseAdapter {
        private Context mContext;

        public VideoAdapter(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) {
            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);
            } else {
                imageView = (ImageView) convertView;
            }

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

        // references to our images
        private Integer[] mThumbIds = {
                R.drawable.sample_2, R.drawable.sample_3,
                R.drawable.sample_4, R.drawable.sample_2,
                R.drawable.sample_6, R.drawable.sample_3,
                R.drawable.sample_4, R.drawable.sample_1

        };
    }
}

, и это menu_gallery_shareXML-файл:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">   
  <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_facebook"
          android:title="@string/Facebook" />
    <item android:id="@+id/menu_youtube"
          android:title="@string/YouTube" />
    <item android:id="@+id/menu_email"
          android:title="@string/Email" />
    <item android:id="@+id/menu_bluetooth"
          android:title="@string/Via Bluetooth" />
   </menu>
</menu>

Ответы [ 2 ]

2 голосов
/ 16 июля 2010

Ваш XML-файл меню определен неправильно. <menu> может иметь только <item> с и <group> с. Удалите лишние <menu>, которые вы определили, и они должны работать правильно. Ваш проект, вероятно, также прекратил сборку, и вы можете проверить это в консоли Eclipse для Android. См. Эту документацию для получения дополнительной информации о ресурсе меню.

0 голосов
/ 16 июля 2010

ПРОБЛЕМЫ РЕШЕНЫ !!

Оооо, это работает :) Первая проблема была в файле XML, вот исправленный код:

<?xml version="1.0" encoding="utf-8"?>
  <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_facebook"
          android:title="Facebook" />
    <item android:id="@+id/menu_youtube"
          android:title="/YouTube" />
    <item android:id="@+id/menu_email"
          android:title="Email" />
    <item android:id="@+id/menu_bluetooth"
          android:title="Via Bluetooth" />
   </menu>

И для моей второй проблемы - необработанная ошибка aapt - Мне просто пришлось удалить ошибку и очистить проект:)

Спасибо за ответы :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...