【发布时间】:2018-02-10 17:33:37
【问题描述】:
我有一个应用程序,我在其中使用 sqlite 作为我的数据库,其中有一个登录和注册。用户还可以查看所有帐户。在我的视图类中,我使用了一个片段,但在这一行中收到一条错误消息:“错误:(58, 55) 错误:不兼容的类型:_6_ViewAll 无法转换为上下文”
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()方法来获取上下文。 -
正如@VasylGlodan 所说,Fragment 不扩展 Context 类,但 Fragment 由扩展或实现 Context 对象的类(直接或间接)显示,因此您可以使用 getContext( ) 方法,或者您始终可以使用 getActivity() 方法获取负责显示 Fragment 对象的 Activity 对象,并可以访问 Activity 的所有公共功能。
-
@VasylGlodan:我已经使用了 getActivity() 但我的视图类让我的应用程序强制关闭
标签: java android android-fragments