0

在片段内,我有一个按钮,我想使用光标适配器“触发”从数据库中填充 Listview。

片段的代码如下所示:

public class TabFragment6 extends ListFragment {
/** (non-Javadoc)
 * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
 */



         @Override
         public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);


         }


         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {

             LinearLayout Layout6 = (LinearLayout) inflater.inflate(R.layout.tab_frag6_layout, container, false);

            // Register for the Button.OnClick event 
                Button bShopGuit = (Button)Layout6.findViewById(R.id.buttonshopguit);
                bShopGuit.setOnClickListener(new View.OnClickListener() {           //abre setonclicklistener(
                    @Override
                    public void onClick(View v) {


                        Cursor allItems;
                        MyDatabase db;

                        Context ctx = (Context)TabFragment6.this.getActivity();


                        db = new MyDatabase(ctx);
                        allItems = db.getGuitarItems();


                        ListAdapter adapter = new SimpleCursorAdapter (ctx, 
                                android.R.layout.simple_list_item_1, 
                                allItems, 
                                new String[] {"ItemName"}, 
                                new int[] {android.R.id.text1});

                        getListView().setAdapter(adapter);  
                    }
                });                                                                 //fecha )




          return Layout6;
         }

但是,我在适配器中遇到错误:方法 getactivity() 未定义新 View.OnClickListener(){} 类型

我怎样才能解决这个问题?谢谢!!

4

2 回答 2

3

使用这个 db = new MyDatabase(getActivity()); 而不是Context ctx = (Context)TabFragment6.this.getActivity(); db = new MyDatabase(ctx);

于 2012-02-13T16:37:17.807 回答
1

你不能getActivity()new View.OnClickListener() { 接口中调用,因为它没有这个方法。您可能希望创建对您的活动的最终引用并在您的 onClick() 方法中使用它。

您正在创建一个新的匿名类,它实现了没有getActivity()方法的 View.OnClickListener 接口。

应该是这样的:

@Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {

             LinearLayout Layout6 = (LinearLayout) inflater.inflate(R.layout.tab_frag6_layout, container, false);
     final Activity activity = this.getActivity(); //this will call your tabfragment's associated activity 


     ............
 //and in your onClick()
             db = new MyDatabase(activity); // or try to use the Contexts or cast to them depends on your constructor parameters            

希望能帮助到你

于 2012-02-13T16:43:19.583 回答