我有一個應用程序,我用sqlite作爲我的數據庫,它有一個登錄和註冊。而且用戶也可以查看所有帳戶。在我看來類,我用了一個片段,但我收到一個錯誤,指出「錯誤:(58,55)錯誤:不兼容的類型:_6_ViewAll不能轉換到上下文」,在這一行Android:片段不能轉換爲上下文
databaseHelper = new DatabaseHelper(_6_ViewAll.this);
哪有我解決這個問題?
這裏是我的源代碼:
_6_ViewAll.java
public class _6_ViewAll extends Fragment {
private AppCompatTextView textViewName;
private RecyclerView recyclerViewUsers;
private List<UserInfo> listUsers;
private UsersRecyclerAdapter usersRecyclerAdapter;
private DatabaseHelper databaseHelper;
View myView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.activity__6__view_all, container, false);
textViewName = (AppCompatTextView) getView().findViewById(R.id.textViewName);
recyclerViewUsers = (RecyclerView) getView().findViewById(R.id.recycleViewUsers);
initObjects();
return myView;
}
private void initObjects() {
listUsers = new ArrayList<>();
usersRecyclerAdapter = new UsersRecyclerAdapter(listUsers);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
recyclerViewUsers.setLayoutManager(mLayoutManager);
recyclerViewUsers.setItemAnimator(new DefaultItemAnimator());
recyclerViewUsers.setHasFixedSize(true);
recyclerViewUsers.setAdapter(usersRecyclerAdapter);
databaseHelper = new DatabaseHelper(_6_ViewAll.this);
String emailFromIntent = getActivity().getIntent().getStringExtra("EMAIL");
textViewName.setText(emailFromIntent);
getDataFromSQLite();
}
private void getDataFromSQLite() {
// AsyncTask is used that SQLite operation not blocks the UI Thread.
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
listUsers.clear();
listUsers.addAll(databaseHelper.getAllUser());
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
usersRecyclerAdapter.notifyDataSetChanged();
}
}.execute();
}
}
謝謝!
databaseHelper = new DatabaseHelper(getContext());應該管用。 –
'Fragment'類沒有擴展'Context',這就是爲什麼你不能轉換它的原因,但是'Activity'確實使用'getActivity()'方法來獲取Context。 –
正如@VasylGlodan所述,片段不會擴展Context類,但片段由直接或間接地顯示的類來擴展或實現Context對象,因此您可以使用getContext()方法,或者您始終可以獲取Activity對象負責用getActivity()方法顯示Fragment對象,並可以訪問Activity的所有公共特性。 –