0 голосов
 
632 просмотра
24.01.2019 / 11:01  MasterOS

Проблема с создания MainActivity.java

  1. package com.example.myapp;
  2.  
  3. import android.app.*;
  4. import android.os.*;
  5. import android.view.*;
  6. import android.view.View.*;
  7. import android.widget.*;
  8.  
  9. public class MainActivity extends Activity
  10. {
  11.     /** Called when the activity is first created. */
  12.     @Override
  13.     public void onCreate(Bundle savedInstanceState)
  14.     {
  15.         super.onCreate(savedInstanceState);
  16.  
  17.         // Set main.xml as user interface layout
  18.         setContentView(R.layout.main);
  19.  
  20.         final TextView textView = (TextView) findViewById(R.id.mainTextView1);
  21.         Button button = (Button) findViewById(R.id.mainButton1);
  22.  
  23.         button.setOnClickListener(new OnClickListener() {
  24.  
  25.                 @Override
  26.                 public void onClick(View p1)
  27.                 {
  28.                     // TODO: Implement this method
  29.                     textView.setText("Clicked");
  30.                 }
  31.             });
  32.         button.setOnLongClickListener(new OnLongClickListener() {
  33.             @Override
  34.             public void OnLongClickListener(View p1)
  35.             {
  36.                 textView.OnLongClick("Clicked");
  37.             }
  38.             });
  39.     }
  40. }
Чем проблема здесь?
Изм. MasterOS от 24.01.2019 / 11:04

screen_20190124_1402.png (38.22 кб.)
24.01.2019 / 12:00  vladgba
там разве должно быть textView.OnLongClick("Clicked");
может textView.setText("LongClicked"); ?
Ответы
 
2 голоса
 
# 24.01.2019 / 17:15  aNNiMON
1. Учимся искать ошибки там, где они подсвечены.
На скриншоте очень выделяется ошибка на строке 36
  1. textView.OnLongClick("Clicked");
Вчитываемся в код и видим, что чуть выше было использовано
  1. textView.setText("Clicked");
и там никакой ошибки нет, значит это нормальный код и значит всё же нужно заменить OnLongClick на setText.

2. Учимся пользоваться документацией.
Внимательно смотрим на скриншот и видим, есть ещё подчёркнутое красным место, возле new OnLongClickListener.
Заходим на https://developer.android.com/reference/ и вбиваем в поиск OnLongClickListener
Попадаем сюда https://developer.android.com/....OnLongClickListener
Видим, что это интерфейс с одним методом:
  1. abstract boolean onLongClick(View v)
Смотрим на наш код и видим, что вместо такого метода у нас
  1. void OnLongClickListener(View p1)
То есть неправильный возвращаемый тип и неправильное название метода. Исправляем:
  1. public boolean onLongClick(View v)
Поскольку возвращаемый тип boolean, нужно вернуть какой-то результат. Всё в той же документации сказано:
Returns
boolean true if the callback consumed the long click, false otherwise.
Поскольку в коде просто меняется текст textview, можно вернуть false,

Вся исправленная часть:
  1. button.setOnLongClickListener(new OnLongClickListener() {
  2.             @Override
  3.             public boolean onLongClick(View p1) {
  4.                 textView.setText("Long Clicked");
  5.                 return false;
  6.             }
  7. });
Изм. aNNiMON от 24.01.2019 / 17:16
25.01.2019 / 06:37  Death
Мне бы так легко каждые ошибки справлять)
 
0 голосов
 
# 30.01.2019 / 11:36  Naik
Или в AS просто удалить все что в круглых скобках, нажать ctrl+space и оно само напишет анонимный класс и необходимые абстрактные методы. Останется только обработать действие в onLongClick
Всего: 2

Реклама

Мы в соцсетях

tw tg yt gt