У меня проблема с созданием объекта другого класса во фрагменте. Мой код
public View onCreateView(LayoutInflater layoutinflater,
ViewGroup viewgroup, Bundle bundle) {
TextView tv = (TextView) getActivity().findViewById(R.id.textView3);
(/*ERROR LINE*/)Database info = new Database(this);
info.open();
String data = info.getData();
info.close();
tv.setText(data);
return layoutinflater.inflate(R.layout.sqlview, viewgroup, false);
}
Но он говорит мне изменить конструктор в классе базы данных, который имеет контекст в качестве аргумента. Пожалуйста помоги.
3 ответа
Используйте ответ Мерлеведе на свой вопрос, но после запуска этого приложения вы должны получить ошибку NullPointerException :
tv.setText(data);
Потому что tv
это null
TextView tv = (TextView) getActivity().findViewById(R.id.textView3);
textView3
находится на sqlview
. поэтому вы должны изменить свой код следующим кодом:
public View onCreateView(LayoutInflater layoutinflater,
ViewGroup viewgroup, Bundle bundle) {
View v = layoutinflater.inflate(R.layout.sqlview, viewgroup, false);
TextView tv = (TextView) v.findViewById(R.id.textView3);
Database info = new Database(getActivity());
info.open();
String data = info.getData();
info.close();
tv.setText(data);
return v;
}
textView3
в sqlview
, но хотите получить доступ к этому с помощью метода getActivity()
, getActivity
возвращает макет вашей активности, который является другим макетом, вам нужен этот макет для доступа к textView3
, поэтому вам нужно сначала объявить свое представление и использовать v.findViewById()
Попробуй использовать
Database info = new Database(getActivity());
getActivity()
возвращает действие, связанное с фрагментом, и, поскольку Activity
наследуется от Context
, вы можете использовать его в качестве параметра для вашего конструктора.
Вам нужно добавить конструктор в Database.java
class Database extends SQLiteOpenHelper{
public Database(Context context) {
super(context, "Your Database Name", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// write you create table query here.
}
// other method to get data...
}
Это решит проблему с конструктором.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.
sqlview
?