ошибки переопределения setonclicklistener для Android

#java #android

#java #Android

Вопрос:

Все мои ошибки в основном связаны с объявлениями buttonEntry, buttonMail и buttonSettings в setonclicklistener. Ошибки:

  • Ошибка: (26, 63) ошибка: не удается найти надстройку класса символов
  • Ошибка: (23, 65) ошибка: не является абстрактной и не переопределяет абстрактный метод onClick (View) в OnClickListener
  • Ошибка: (29, 22) ошибка: несовместимые типы: неожиданное возвращаемое значение
  • Ошибка: (24, 11) ошибка: метод не переопределяет и не реализует метод из супертипа

Кто-нибудь может помочь решить эту проблему? Я все еще новичок, и я понятия не имею, почему он выдает так много ошибок. Кроме того, если я попытаюсь включить мой main_menu.xml android: onClick=»methodName», мое приложение перестает отвечать, когда я открываю его на эмуляторе, без каких-либо ошибок при сборке.

     Button buttonEntry;
    Button buttonMail;
    Button buttonSettings;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        buttonEntry = (Button)findViewById(R.id.action_add_entry);
      buttonEntry.setOnClickListener(new View.OnClickListener() {
          @Override
          public void OnClick(View v) {
                 Intent entry = new Intent(MainActivity.this, AddEntry.class);
                 startActivity(entry);
              setContentView(R.layout.newentry);
              return true;
          }
      });
        buttonMail = (Button)findViewById(R.id.action_add_email);
        buttonMail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void OnClick(View v) {
                   Intent mail = new Intent(MainActivity.this, AddMail.class);
                   startActivity(mail);
                setContentView(R.layout.newmail);
                return true;
            }
        });
        buttonSettings = (Button)findViewById(R.id.action_settings);
        buttonSettings.setOnClickListener(new View.OnClickListener() {
            @Override
            public void OnClick(View v) {
                   Intent settings = new Intent(MainActivity.this, AppSettings.class);
                    startActivity(settings);
                setContentView(R.layout.settings);
                return true;
            }
        });
    }
  

Activity_Manifest, вот 3 действия, которые я добавил. Их имена выделены красным цветом.

 <activity android:name=".AddEntry"></activity>
    <activity android:name=".AddMail"></activity>
    <activity android:name=".AppSettings"></activity>
  

Комментарии:

1. можете ли вы опубликовать activity_main.xml , также почему вы вызываете setContentView сразу после запуска нового действия?

Ответ №1:

Попробуйте это:

 Button buttonEntry;
Button buttonMail;
Button buttonSettings;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    buttonEntry = (Button)findViewById(R.id.action_add_entry);
  buttonEntry.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
             Intent entry = new Intent(MainActivity.this, AddEntry.class);
             startActivity(entry);
          setContentView(R.layout.newentry);
      }
  });
    buttonMail = (Button)findViewById(R.id.action_add_email);
    buttonMail.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
               Intent mail = new Intent(MainActivity.this, AddMail.class);
               startActivity(mail);
            setContentView(R.layout.newmail);

        }
    });
    buttonSettings = (Button)findViewById(R.id.action_settings);
    buttonSettings.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
               Intent settings = new Intent(MainActivity.this, AppSettings.class);
                startActivity(settings);
            setContentView(R.layout.settings);
        }
    });
}
  

Ошибка: (26, 63) ошибка: не удается найти надстройку класса символов
Если addEntry находится в другом .java, вам нужно импортировать поверх вашего файла, например:

 import your.package.name.AddEntry;
  

Комментарии:

1. Решены большинство проблем, спасибо, но осталась только 1 ошибка, та, что с символами. Я пытался использовать импорт package.name . addEntry;, но я все равно получил ту же ошибку. Я обновил свой основной пост действиями, которые я добавил в activity main, получил их имена красным, я не знаю почему.

Ответ №2:

Пожалуйста, проверьте содержимое вашего файла макета активности activity_main.xml . У него должны быть Button элементы с id атрибутом, установленным в соответствующее значение.
Например, в вашем случае для правильной работы следующей строки кода

  buttonEntry = (Button)findViewById(R.id.action_add_entry);
  

вам нужно добавить в activity_main.xml элемент Button, который будет выглядеть примерно так

 ...
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add"
    android:id="@ id/action_add_entry" />
...
  

Обратите внимание на android:id атрибут.

Комментарии:

1. Это не его проблема. Отсутствующий идентификатор вызовет исключение NullException, он его еще не получил.