Android: ошибка при использовании onCreateOptionsMenu, недоступная в суперклассе? - PullRequest
1 голос
/ 07 октября 2009

Я хотел бы, если кто-нибудь может помочь .. Я пришел из ac # фона, поэтому у меня есть основы синтаксиса java, и я следую учебному пособию hello world, в котором есть 1 действие (наследует от Activity), которое в основном показывает мой взгляд так:

     setContentView(R.layout.main);

Итак, что я хотел сделать (просмотрев учебник) - создать меню путем реализации (переопределения) этого метода

     onCreateOptionsMenu

но мой класс активности наследует Activity, и кажется, что он не доступен в суперклассе ..

Я немного растерялся, могу ли я создать более 1 класса занятий? следовательно, я должен создать класс Menus Activity, который наследуется от другого суперкласса?

Если это так, как бы я назвал новый класс активности, который я создал из моего

     public void onCreate

, который реализован в моем основном классе активности, который наследует Activity.

Я немного растерялся и, похоже, не могу найти какую-то конкретную информацию по этому поводу.

Есть идеи?

Вот мой простой класс деятельности (в основном он показывает вид)

public class DGAdmin extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //TextView tv = new TextView(this);
    //tv.setText("Hello, Android");
    //setContentView(tv);

}

}

1 Ответ

3 голосов
/ 08 октября 2009

Для меню добавьте (например) следующий метод в свой класс DGAdmin:

public static final int ITEM_1 = Menu.FIRST;
public static final int ITEM_2 = Menu.FIRST + 1;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    // Add two example menu buttons
    int groupId = 0;
    int menuItemOrder = Menu.NONE;

    int menuItemId = ITEM_1;
    String menuItemText = "item 1";
    MenuItem menuItem = menu.add(groupId, menuItemId, menuItemOrder, menuItemText);
    menuItem.setIcon(R.drawable.menu_item_1_icon);

    menuItemId = ITEM_2;
    menuItemText = "item 2";
    menuItem = menu.add(groupId, menuItemId, menuItemOrder, menuItemText);
    menuItem.setIcon(R.drawable.menu_item_2_icon);
}

Что касается вопроса о создании и вызове нового действия, я думаю, что вам нужно прочитать немного больше об основах Android, например. жизненный цикл действия, различные компоненты (действия, сервисы, макеты на основе XML и т. д.), чтобы лучше понять, как писать приложения для Android. Я сам новичок в Android, поэтому я знаю, что это может быть довольно сложно, прежде чем вы освоите все это. Но продолжайте читать и писать код, и скоро все станет ясно.

Прочтите основы приложения в руководстве разработчика, посмотрите ответы на этот вопрос это ) и проверьте API ссылка для новых методов или классов.

Но чтобы явно ответить на ваш вопрос, вы используете намерение начать новое действие:

Intent intent = new Intent(callingActivity.this, NewActivity.class);
startActivity(intent);

Или, если вы хотите, чтобы новое действие вернуло некоторый результат после завершения:

startActivityForResult(intent, requestCode);

Надеюсь, это поможет, по крайней мере!


ОБНОВЛЕНИЕ ОТВЕТИТЬ НА КОММЕНТАРИЙ:

Используете ли вы следующий импорт в вашем коде?

import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;

Если вы делаете, и это все еще не работает, я не знаю, в чем может быть проблема ...

Начиная с Android 1.0, класс Activity включает метод onCreateOptionsMenu () , поэтому он должен быть доступен для вас. Используете ли вы Eclipse в качестве среды разработки? Если вы этого не сделаете, я действительно рекомендую вам начать использовать его с плагином Android, это действительно гладко! Проверьте, как установить его в ответах на этот вопрос .

Надеюсь, это решит вашу проблему, иначе, может быть, кто-то более опытный, чем я, может сказать вам, в чем проблема.

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