Fragment
, SQLite
쿼리 문을 확장하는 클래스 내 작성은 가능합니까? 내가 직면하고SQLite 쿼리 문을 사용하는 확장 단편 및 목록 단편 클래스
@
이문제 SQLiteOpenHelper
이 매개 변수 만 Fragment
에있는 그것의 불가능 제공하는 컨텍스트와 같은 컨텍스트를 필요로한다는 것이다.
다른 레이아웃에서도 그대로 Fragment elements from the Activity
에 액세스 할 수 없으며 페이저보기를 사용할 수 있습니까?
public class ListFrag extends Fragment implements OnClickListener{
private SQLiteDatabase database;
private MySQLiteHelper dbHelper=new MySQLiteHelper(this.getActivity().getApplicationContext());
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.w("aaaaaaa","List on Create");
database = dbHelper.getWritableDatabase();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.w("b","List on Activity Created");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.home, container,false);
TableRow leave =(TableRow)view.findViewById(R.id.leave);
leave.setOnClickListener(this);
Log.w("ccccccccc","List on Create View");
TableRow time =(TableRow)view.findViewById(R.id.time);
time.setOnClickListener(this);
TableRow cart =(TableRow)view.findViewById(R.id.cart);
cart.setOnClickListener(this);
TableRow invoice =(TableRow)view.findViewById(R.id.invoice);
invoice.setOnClickListener(this);
TableRow purchase =(TableRow)view.findViewById(R.id.purchase);
purchase.setOnClickListener(this);
TableRow travel =(TableRow)view.findViewById(R.id.travel);
travel.setOnClickListener(this);
TextView leave_n =(TextView)view.findViewById(R.id.leave_n);
Cursor LCount= database.rawQuery("select count(*) from LeaveRequest",null);
LCount.moveToFirst();
int lcount= LCount.getInt(0);
LCount.close();
leave_n.setText(""+lcount);
return view;
}
public void onClick(View v) {
// TODO Auto-generated method stub
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
switch (v.getId()) {
case R.id.leave:
ArrayListFragment list=new ArrayListFragment();
fragmentTransaction.replace(R.id.frag_capt, list);
fragmentTransaction.commit();
break;
case R.id.time:
Toast.makeText(this.getActivity().getApplicationContext(), "Toast message",
Toast.LENGTH_LONG).show();
break;
case R.id.cart:
Toast.makeText(this.getActivity().getApplicationContext(), "Toast message",
Toast.LENGTH_LONG).show();
break;
case R.id.invoice:
Toast.makeText(this.getActivity().getApplicationContext(), "Toast message",
Toast.LENGTH_LONG).show();
break;
case R.id.purchase:
Toast.makeText(this.getActivity().getApplicationContext(), "Toast message",
Toast.LENGTH_LONG).show();
break;
case R.id.travel:
Toast.makeText(this.getActivity().getApplicationContext(), "Toast message",
Toast.LENGTH_LONG).show();
break;
}
}
조각에서 컨텍스트를 제공 할 수 있습니다 ... 당신은 조각이 포함 된 활동의 맥락을 제공 : 데이터베이스에 아무것도하기 전에 일반적으로 이런 일이 있어야합니다. – Barak
아래 답변 중 하나가 문제를 해결하면 받아 들여야합니다 (해당 답변 옆의 체크 표시를 클릭하십시오). 그것은 두 가지 일을합니다. 모든 사람에게 문제가 해결되었음을 알리고 도움을 제공하는 사람에게 도움을줍니다. 전체 설명을 보려면 [here] (http://meta.stackexchange.com/a/5235/187716)를 참조하십시오. – Barak
SQLiteDBHelper가 null ptr 예외를 제공합니다. bcos에서 컨텍스트를 다시 분석 할 수 없습니다. 해결책이 되라. –