Метод отсутствует во фрагменте или имеет неверную подпись.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Метод отсутствует во фрагменте или имеет неверную подпись.

Сообщение Anonymous »


Итак, я пытаюсь создать событие onclick для кнопки в созданном мною фрагменте:

Вот класс Java для этого фрагмента:

пакет com.hfad.projekt; импортировать android.os.Bundle; импортировать androidx.fragment.app.Fragment; импортировать android.util.Log; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать android.widget.TextView; импортировать android.content.SharedPreferences; импортировать android.preference.PreferenceManager; общественный класс FirstFragment расширяет фрагмент { @Override public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Пакет saveInstanceState) { return inflater.inflate(R.layout.fragment_first, контейнер, false); } public void onUpdatePressed (Просмотр) { // вот метод, который должен выполняться по клику TextView textView = (TextView) view.findViewById(R.id.textView); SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getContext()); Строка text = pref.getString("текст", "Пусто"); textView.setText("пример текста"); Log.i("Тег", "onClick: "); } } Но студия Android сообщает мне, что метод onUpdatePressed отсутствует в FirstFragment или имеет неверную подпись, а метод onUpdatePressed(android.view.View) никогда не используется. Можете ли вы помочь мне решить эту проблему?

Я попробовал поместить метод в действие, внутри которого помещен фрагмент:

пакет com.hfad.projekt; импортировать androidx.appcompat.app.ActionBarDrawerToggle; импортировать androidx.appcompat.app.AppCompatActivity; импортировать androidx.appcompat.widget.ShareActionProvider; импортировать androidx.appcompat.widget.Toolbar; импортировать androidx.core.view.GravityCompat; импортировать androidx.core.view.MenuItemCompat; импортировать androidx.drawerlayout.widget.DrawerLayout; импортировать androidx.fragment.app.Fragment; импортировать androidx.fragment.app.FragmentTransaction; импортировать android.content.SharedPreferences; импортировать android.os.Bundle; импортировать android.preference.PreferenceManager; импортировать android.util.Log; импортировать android.view.GestureDetector; импортировать android.view.Menu; импортировать android.view.MenuItem; импортировать android.content.Intent; импортировать android.view.MotionEvent; импортировать android.view.View; импортировать android.widget.Button; импортировать android.widget.EditText; импортировать android.widget.TextView; импортировать android.widget.Toast; импортировать com.google.android.material.navigation.NavigationView; публичный класс MainActivity расширяет AppCompatActivity реализует NavigationView.OnNavigationItemSelectedListener { частный детектор GestureDetector; частный статический финал int NAV_F1 = R.id.f1; частный статический финал int NAV_F2 = R.id.f2; частный статический окончательный int NAV_F3 = R.id.f3; частный ShareActionProvider ShareActionProvider; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_main); Панель инструментов Toolbar = findViewById(R.id.toolbar); setSupportActionBar (панель инструментов); ящик DrawerLayout = findViewById(R.id.drawer_layout); ActionBarDrawerToggle переключатель = новый ActionBarDrawerToggle(это, ящик, панель инструментов, R.string.nav_open_drawer, R.string.nav_close_drawer); ящик.addDrawerListener(переключить); переключить.syncState(); NavigationView NavigationView = findViewById(R.id.nav_view); NavigationView.setNavigationItemSelectedListener(this); если (savedInstanceState == ноль) { Фрагмент фрагмента = новый FirstFragment(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(R.id.content_frame, фрагмент); фут.коммит(); } Просмотр представления = findViewById(R.id.drawer_layout); детектор = новый GestureDetector (это, новый MyGestureListener()); view.setOnTouchListener(touchListener); } View.OnTouchListener touchListener = новый View.OnTouchListener() { @Override public boolean onTouch(View v, событие MotionEvent) { вернуть детектор.onTouchEvent(событие); } }; класс MyGestureListener расширяет GestureDetector.SimpleOnGestureListener { частный статический финал int SWIPE_MIN_DISTANCE = 50; частный статический финал int SWIPE_MAX_OFF_PATH = 200; частный статический финал int SWIPE_THRESHOLD_VELOCITY = 200; @Override public boolean onDown (событие MotionEvent) { Log.d("TAG","onDown: "); вернуть истину; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { Log.i("TAG", "onSingleTapConfirmed: "); вернуть истину; } @Override public void onLongPress (MotionEvent e) { Log.i("TAG", "onLongPress: "); } @Override общедоступное логическое значение onDoubleTap (MotionEvent e) { Log.i("TAG", "onDoubleTap: "); вернуть истину; } @Override общедоступное логическое значение onScroll(MotionEvent e1, MotionEvent e2, плавающее расстояниеX, плавающее расстояниеY) { Log.i("TAG", "onScroll: "); вернуть истину; } @Override общедоступное логическое значение onFling (MotionEvent event1, MotionEvent event2, плавающая скоростьX, плавающая скоростьY) { Log.i("TAG", "onFling: "); пытаться { Toast t = Toast.makeText(MainActivity.this, «Жест обнаружен», Toast.LENGTH_SHORT); т.шоу(); float diffAbs = Math.abs(event1.getY() - event2.getY()); float diff = скоростьX - скоростьY; если (diffAbs > SWIPE_MAX_OFF_PATH) вернуть ложь; если (-diff > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { MainActivity.this.onLeftSwipe(); } } catch (Исключение е) { Log.e("Домой", "Ошибка жестов"); } вернуть истину; } } частная пустота onLeftSwipe() { Намерение намерение = новое намерение (MainActivity.this, SecondActivity.class); MainActivity.this.startActivity(намерение); } @Override общедоступное логическое значение onOptionsItemSelected (элемент MenuItem) { переключатель (item.getItemId()) { по умолчанию: вернуть super.onOptionsItemSelected(пункт); } } @Override общедоступное логическое значение onCreateOptionsMenu (меню меню) { getMenuInflater().inflate(R.menu.menu_main, меню); MenuItem MenuItem = Menu.findItem(R.id.action_share); доляActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem); setShareActionIntent("День добрый"); вернуть super.onCreateOptionsMenu(меню); } частный недействительный setShareActionIntent (текст строки) { Намерение намерение = новое намерение (Intent.ACTION_SEND); Intent.setType("текст/обычный"); намерение.putExtra(Intent.EXTRA_TEXT, текст); ShareActionProvider.setShareIntent (намерение); } @Override public boolean onNavigationItemSelected (пункт MenuItem) { int id = item.getItemId(); Фрагмент фрагмента; Намерение намерение = ноль; если (идентификатор == NAV_F1) { фрагмент = новый FirstFragment(); } иначе если (идентификатор == NAV_F2) { фрагмент = новый SecondFragment(); } иначе если (идентификатор == NAV_F3) { фрагмент = новый ThirdFragment(); } еще { фрагмент = новый FirstFragment(); } если (фрагмент! = ноль) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, фрагмент); фут.коммит(); } еще { startActivity (намерение); } ящик DrawerLayout = findViewById(R.id.drawer_layout); ящик.closeDrawer(GravityCompat.START); вернуть истину; } @Override общественный недействительный onBackPressed () { ящик DrawerLayout = findViewById(R.id.drawer_layout); если (drawer.isDrawerOpen(GravityCompat.START)) { ящик.closeDrawer(GravityCompat.START); } еще { супер.onBackPressed(); } } public void onUpdatePressed (Просмотр) { // вот метод, который должен выполняться по клику TextView textView = (TextView) view.findViewById(R.id.textView); SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); Строка text = pref.getString("текст", "Пусто"); textView.setText("пример текста"); Log.i("Тег", "onClick: "); } } Но это приводит к той же проблеме.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»