无法在片段内创建类的对象

时间:2014-03-06 20:56:08

标签: android android-fragments

我在片段中创建另一个类的对象时遇到问题。我的代码是

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);
}

但它告诉我修改数据库类中的构造函数,该构造函数具有Context作为参数。 请帮忙。

3 个答案:

答案 0 :(得分:1)

尝试使用

Database info = new Database(getActivity());

getActivity()返回与该片段关联的活动,由于Activity继承自Context,您可以将其用作构造函数的参数。

答案 1 :(得分:1)

使用Merlevede回答您的问题,但在运行此应用程序后,您必须在 NullPointerException 错误:

tv.setText(data);

因为tvnull

TextView tv = (TextView) getActivity().findViewById(R.id.textView3);

textView3sqlview上。所以你必须使用以下代码更改你的代码:

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;
}

答案 2 :(得分:0)

您必须在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...



}

这将解决您的构造函数问题。