передавая это внешнему классу и запуская действие из списка alerttdialog на Android - PullRequest
0 голосов
/ 13 октября 2011

Я занимаюсь разработкой приложения для Android, в этом приложении есть десяток действий, каждое из которых предназначено для соответствующего экрана. Теперь у меня есть общая панель субтитров в верхней части экрана. эта панель субтитров имеет кнопку для отображения диалогового окна с предупреждением, в котором отображается список ссылок для перехода на другой экран.

Я мог бы написать одну и ту же функцию для каждого действия, чтобы вызывать диалоговое окно с предупреждением, но это было бы утомительно, если я хочу изменить их, поэтому я создал этот класс:

public class MenuAlertDialog extends Activity {

/*
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
}
 */
public void createMenu(final Context context){
    AlertDialog.Builder dlg = new AlertDialog.Builder(context);
    dlg.setTitle("menu");

    String[] items = {"pageA", "pageB", "pageC", "pageD", "pageE"};
    dlg.setItems(items, new DialogInterface.OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which){
            switch(which){
            case 0:
                Intent intent = new Intent(context, MainActivity.class);
                startActivity(intent);
                break;
            default:
                break;

            }
        }
    });
    dlg.show();
}
}

и вызывайте его из каждого действия, например:

MenuAlertDialog menu = new MenuAlertDialog();
menu.createMenu(this);

изнутри onCreate.

Может отображать alertDialog, но всякий раз, когда я нажимаю ссылку pageA, происходит сбой с неожиданной ошибкой.

Logcat говорит, что это nullpointererror, и причина кажется

startActivity(intent);

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Удалите код

extends Activity

, поскольку вам не нужно расширять создаваемый класс, поскольку он не зависит от какой-либо функциональности, связанной с деятельностью.* замените его на

context.startActivity(intent);
1 голос
/ 13 октября 2011

Вы должны изменить класс на Расширяет диалог, а не активность. Также для Попробуйте это:

Ознакомьтесь с этим руководством по созданию настраиваемого диалогового окна. Пользовательский диалог Также здесь Другой учебник И Здесь

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