Мой фрагмент не работает при запуске приложенияAndroid

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

Сообщение Anonymous »


Я пытаюсь создать приложение-словарь.

Здесь я использую фрагменты списка и фрагменты подробностей.

Когда я ввожу слово в поиск, оно появляется, когда я нажимаю на него, чтобы просмотреть подробности, но появляющееся слово не является тем словом, которое я ищу в поиске.

Когда я запускаю приложение, сообщение об ошибке не появляется.

поэтому я не знаю, в чем заключается ошибка.

это скриншот моего приложения

Это изображение, когда я ввожу слово в поиске

Даже для других слов не появилось никаких подробностей искомого слова


Изображение

Изображение


Ниже приведен код моего словарного приложения

KamusActivity, Detailfragment, DictionaryFragment и DBHalper

Если вам нужен другой код, сообщите мне позже, я загружу другой код

Пожалуйста, помогите, потому что я сделаю это своим последним проектом перед выпуском.

Спасибо

KamusActivity.java

import androidx.appcompat.app.ActionBarDrawerToggle; импортировать androidx.appcompat.app.AppCompatActivity; импортировать androidx.appcompat.widget.Toolbar; импортировать androidx.core.view.GravityCompat; импортировать androidx.drawerlayout.widget.DrawerLayout; импортировать androidx.fragment.app.Fragment; импортировать androidx.fragment.app.FragmentManager; импортировать androidx.fragment.app.FragmentTransaction; импортировать androidx.lifecycle.ViewModel; импортировать android.os.Bundle; импортировать android.text.Editable; импортировать android.text.TextWatcher; импортировать android.view.Menu; импортировать android.view.MenuItem; импортировать android.view.View; импортировать android.view.WindowManager; импортировать android.widget.EditText; импортировать com.google.android.material.navigation.NavigationView; импортировать java.util.ArrayList; импортировать java.util.Locale; публичный класс kamusActivity расширяет AppCompatActivity реализует NavigationView.OnNavigationItemSelectedListener { МенюПункт менюНастройки; Панель инструментов; ДБХелпер DictionaryFragment словарьFragment; BookmarkFragment bookmarkFragment; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_kamus); панель инструментов = (Панель инструментов) findViewById(R.id.toolbar); setSupportActionBar (панель инструментов); dbHelper = новый DBHelper(это); DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); ActionBarDrawerToggle toggle = новый ActionBarDrawerToggle( это, ящик, панель инструментов, R.string.navigation_drawer_open, R.string.navigation_drawer_close); ящик.addDrawerListener(переключить); переключить.syncState(); NavigationView NavigationView = (NavigationView) findViewById(R.id.nav_view); NavigationView.setNavigationItemSelectedListener((NavigationView.OnNavigationItemSelectedListener) this); словарьFragment = новый DictionaryFragment(); bookmarkFragment = BookmarkFragment.getNewInstance(dbHelper); goToFragment (словарьFragment, правда); словарьFragment.setOnFragmentListener(новый FragmentListener() { @Override public void onItemClick (строковое значение) { Идентификатор строки = Bahasa.getState(kamusActivity.this,"dic_type"); int dicType = id == null? R.id.action_it:Integer.valueOf(id); goToFragment( DetailFragment.getNewInstance(value,dbHelper,dicType),false); } }); bookmarkFragment.setOnFragmentListener(новый FragmentListener() { @Override public void onItemClick (строковое значение) { Идентификатор строки = Bahasa.getState(kamusActivity.this,"dic_type"); int dicType = id == null? R.id.action_it:Integer.valueOf(id); goToFragment( DetailFragment.getNewInstance(value,dbHelper,dicType),false); } }); EditText edit_search = findViewById(R.id.edit_search); edit_search.addTextChangedListener(новый TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { словарьFragment.filterValue(charSequence.toString()); } @Override общественная недействительность afterTextChanged (редактируемый, редактируемый) { } }); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); } @Override общественный недействительный onBackPressed () { DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); если (drawer.isDrawerOpen(GravityCompat.START)) { ящик.closeDrawer(GravityCompat.START); }еще { супер.onBackPressed(); } } @Override public boolean onCreateOptionsMenu (меню) { super.onCreateOptionsMenu(меню); // Раздувание меню; это добавляет элементы на панель действий, если она присутствует getMenuInflater().inflate(R.menu.main_menu, меню); MenuSetting = (MenuItem) Menu.findItem(R.id.action_settings); Идентификатор строки = Bahasa.getState(this,"dic_type"); если (идентификатор!= ноль) onOptionsItemSelected(menu.findItem(Integer.valueOf(id))); еще { ArrayList источник = dbHelper.getWord(R.id.action_it); словарьFragment.resetDataSource(источник); } вернуть истину; } @Override public boolean onOptionsItemSelected (пункт MenuItem) { int id = item.getItemId(); //без проверки SimplifyingIfStatement если (id == R.id.action_it) { Bahasa.saveState(this,"dic_type", String.valueOf(id)); ArrayList source = dbHelper.getWord(id); словарьFragment.resetDataSource(источник); MenuSetting.setIcon(getDrawable(R.drawable.icon_bibt_2)); вернуть истину; }иначе если (id == R.id.action_ti){ Bahasa.saveState(this,"dic_type", String.valueOf(id)); ArrayList source = dbHelper.getWord(id); словарьFragment.resetDataSource(источник); MenuSetting.setIcon(getDrawable(R.drawable.icon_btbi_2)); вернуть истину; } вернуть super.onOptionsItemSelected(пункт); } public boolean onNavigationItemSelected (пункт MenuItem) { // Здесь обрабатываются щелчки по элементам представления навигации. int id = item.getItemId(); если (id == R.id.nav_bookmark){ Строка activeFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container).getClass().getSimpleName(); if(!activeFragment.equals(BookmarkFragment.class.getSimpleName())){ goToFragment (bookmarkFragment, ложь); } } DrawerLayout ящик = (DrawerLayout) findViewById (R.id.drawer_layout); ящик.closeDrawer(GravityCompat.START); вернуть истину; } void goToFragment (фрагмент фрагмента, логическое значение isTop) { FragmentManager фрагментManager = getSupportFragmentManager(); FragmentTransaction фрагментТранзакция = фрагментМенеджер.beginTransaction(); фрагментTransaction.replace(R.id.fragment_container, фрагмент); если (!isTop) фрагментTransaction.addToBackStack(ноль); фрагментТранзакция.коммит(); } @Override public boolean onPrepareOptionsMenu (меню) { Строка activeFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container).getClass().getSimpleName(); если (activeFragment.equals(BookmarkFragment.class.getSimpleName())){ MenuSetting.setVisible(ложь); Toolbar.findViewById(R.id.edit_search).setVisibility(View.GONE); toolbar.setTitle("Закладка"); }еще { MenuSetting.setVisible(истина); Toolbar.findViewById(R.id.edit_search).setVisibility(View.VISIBLE); Toolbar.setTitle(""); } вернуть истину; } } СловарьФрагмент.java импортировать android.content.Context; импортировать android.os.Bundle; импортировать androidx.annotation.NonNull; импортировать androidx.annotation.Nullable; импортировать androidx.fragment.app.Fragment; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать android.widget.AdapterView; импортировать android.widget.ArrayAdapter; импортировать android.widget.Button; импортировать android.widget.ListView; импортировать java.util.ArrayList; общественный класс DictionaryFragment расширяет фрагмент { Private String value = "Привет всем!!!"; частный прослушиватель FragmentListener; Адаптер ArrayAdapter; ListView dicList; частный ArrayList mSource = новый ArrayList(); общественный DictionaryFragment() { // Требуемый пустой публичный конструктор } @Override public void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); } @Override public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Пакет saveInstanceState) { // Раздуваем макет для этого фрагмента return inflater.inflate(R.layout.fragment_dictionary, контейнер, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle saveInstanceState) { super.onViewCreated(просмотр, saveInstanceState); dicList = view.findViewById(R.id.dictionaryList); адаптер = новый ArrayAdapter(getContext(), android.R.layout.simple_list_item_1,mSource); dicList.setAdapter(адаптер); dicList.setOnItemClickListener (новый AdaptorView.OnItemClickListener () { @Override public void onItemClick(AdapterView адаптерView, Представление просмотра, int позиция, long l) { если (слушатель!= ноль) прослушиватель.onItemClick(mSource.get(позиция)); } }); } public void resetDataSource(ArrayList источник){ мИсточник = источник; адаптер = новый ArrayAdapter(getContext(), android.R.layout.simple_list_item_1,mSource); dicList.setAdapter(адаптер); } public void filterValue (строковое значение) { адаптер.getFilter().фильтр(значение); размер int = адаптер.getCount(); для (int я = 0; я 0) { Destination.write(буфер, 0, длина); } исходная база данных.закрыть(); назначение.промывка(); пункт назначения.закрыть(); } @Override public void onCreate (SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade (SQLiteDatabase sqLiteDatabase, int i, int i1) { } @SuppressLint("Диапазон") public ArrayList getWord(int dicType){ Строка tableName = getTableName(dicType); Строка q = «ВЫБРАТЬ * ИЗ» + имя_таблицы; Результат курсора = mDB.rawQuery(q, null); Источник ArrayList = новый ArrayList(); в то время как (result.moveToNext()) { source.add(result.getString(result.getColumnIndex(COL_KEY))); } источник возврата; } @SuppressLint("Диапазон") public Word getWord (String key, int dicType) { Строка tableName = getTableName(dicType); String q = "SELECT * FROM "+tableName+" WHERE Upper([key]) = Upper(?)"; Результат курсора = mDB.rawQuery(q,new String[]{key}); Слово слово = новое слово(); в то время как (result.moveToNext()) { word.key = result.getString(result.getColumnIndex(COL_KEY)); word.value = result.getString(result.getColumnIndex(COL_VALUE)); } ответное слово; } общественная недействительность addBookmark (слово слова) { пытаться { String q = "INSERT INTO bookmark(["+COL_KEY+"],["+COL_VALUE+"]) VALUES (?, ?);"; mDB.execSQL(q, new Object[]{word.key, word.value}); }catch (SQLException ex){ } } общественная недействительность RemoveBookmark (слово слова) { пытаться { String q = "УДАЛЕНИЕ ИЗ закладки WHERE Upper(["+COL_KEY+"]) = Upper(?) AND ["+COL_VALUE+"] = ?;"; mDB.execSQL(q, new Object[]{word.key, word.value}); }catch (SQLException ex){ } } public void removeBookmark (строковый ключ) { пытаться { String q = "УДАЛИТЬ ИЗ закладки WHERE Upper(["+COL_KEY+"]) = Upper(?);"; mDB.execSQL(q, новый объект[]{ключ}); }catch (SQLException ex){ } } @SuppressLint("Диапазон") public ArrayList getAllWordFromBookmark() { String q = "ВЫБРАТЬ * ИЗ закладки ORDER BY [дата] DESC;"; Результат курсора = mDB.rawQuery(q,null); Источник ArrayList = новый ArrayList(); в то время как (result.moveToNext()) { source.add(result.getString(result.getColumnIndex(COL_KEY))); } источник возврата; } public boolean isWordMark(Word word) { String q = "SELECT * FROM закладки WHERE Upper([key]) = Upper(?) AND [value] =?"; Результат курсора = mDB.rawQuery(q, new String[]{word.key, word.value}); вернуть результат.getCount() > 0; } @SuppressLint("Диапазон") public Word getWordFromBookmark (строковый ключ) { String q = "SELECT * FROM закладки WHERE Upper([key]) = Upper(?)"; Результат курсора = mDB.rawQuery(q, new String[]{key}); Слово слово = ноль; в то время как (result.moveToNext()) { слово = новое слово(); word.key = result.getString(result.getColumnIndex(COL_KEY)); word.value = result.getString(result.getColumnIndex(COL_VALUE)); } ответное слово; } общественная строка getTableName (int dicType) { Строка tableName = ""; если (dicType == R.id.action_ti){ имя_таблицы = TBL_BT_BI; }иначе если (dicType == R.id.action_it){ имя_таблицы = TBL_BI_BT; } вернуть имя таблицы; } общественный недействительный ClearBookmark () { пытаться { String q = "УДАЛИТЬ ИЗ закладки;"; mDB.execSQL(д); }catch (SQLException ex){ } } }
Ответить

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

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

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

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

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