1

FragmentSQLiteクエリステートメントを拡張するクラス内で書くことは可能ですか?

問題@

私が直面しているSQLiteOpenHelperのは、パラメーターとしてコンテキストが必要ですが、でコンテキストを提供することはできませんFragment

私もFragment elements from the Activity別のレイアウトでアクセスできないのですが、View Pagerは使えますか?

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;


        }

    }
4

1 に答える 1

1

私はいつもそれをします...使用しますgetActivity()

私のListFragmentsの1つからのコードスニペット:

itemCursor = mDbHelper.fetchAllItems();
getActivity().startManagingCursor(itemCursor);
String[] from = new String[] { GroceryDB.ITEM_NAME,
        GroceryDB.ITEM_UNIT, GroceryDB.ITEM_COST };
int[] to = new int[] { R.id.ListItem1, R.id.ListItem2, R.id.ListItem4 };
lists = new CursorAdapter_Check(getActivity(),
        R.layout.rowlayout_itemlist, itemCursor, from, to);
setListAdapter(lists);

編集

データベースを開いてから、閉じたデータベースからカーソルを取得しようとすると、エラーが発生します。通常、データベースで何かを行う前に、次のようなものがあるはずです。

mDbHelper = new yourDatabase(getActivity());
mDbHelper.open();
于 2012-06-15T06:02:50.833 に答える