0

我正在開發一個應用程序,它使用ActionBar選項卡來顯示ListFragment的選項列表。 list(和ListFragment)顯示沒有問題,但ListView的setOnItemClickListener似乎不起作用,因爲單擊列表中的項目時沒有任何反應。下面是該ListFragment類的代碼:ListView setOnItemClickListener in ListFragment not working

package XXX.XXX; 

public class AboutFrag extends SherlockListFragment 
{ 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) 
    { 
      View view = inflater.inflate(R.layout.aboutfrag, container, false); 

      ListView lv = (ListView) view.findViewById(android.R.id.list); 

      String[] items = new String[] {"About 1", "About 2", "About 3"}; 

      lv.setAdapter(new ArrayAdapter<String>(getActivity(), R.layout.list_item, items)); 

      lv.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 

        switch (position) 
        { 
         case 0: 
          Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com")); 
          startActivityForResult(browserIntent, 0); 
          break; 

         case 1: 
          Intent browserIntent2 = new Intent(Intent.ACTION_VIEW, Uri.parse("http://wikipedia.org")); 
          startActivityForResult(browserIntent2, 0); 
          break; 

         case 2: 
          Intent browserIntent3 = new Intent(Intent.ACTION_VIEW, Uri.parse("http:/android.com"); 
          startActivityForResult(browserIntent3, 0); 
          break; 
        }   
       } 
       }); 

      return view; 
    }  
} 

我猜想這是行不通的,因爲類返回視圖對象,所以FragmentActivity不能運行監聽器的代碼,所以沒有人知道如何使這個工作?順便說一下,我使用ActionBarSherlock。提前致謝!!!

回答

6

您也可以覆蓋從SherlockListFragment繼承的onListItemClick方法。

如下:

@Override 
public void onListItemClick(ListView l, View v, int position, long id) 
{ 
     super.onListItemClick(l, v, position, id); 

    switch (position) 
        { 
         case 0: 
          Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com")); 
          startActivityForResult(browserIntent, 0); 
          break; 

         case 1: 
          Intent browserIntent2 = new Intent(Intent.ACTION_VIEW, Uri.parse("http://wikipedia.org")); 
          startActivityForResult(browserIntent2, 0); 
          break; 

         case 2: 
          Intent browserIntent3 = new Intent(Intent.ACTION_VIEW, Uri.parse("http:/android.com"); 
          startActivityForResult(browserIntent3, 0); 
          break; 
        } 

} 
+0

馬爾科您好,感謝您的答覆!它工作得很好! – siddarthkaki

+0

這幫了我。謝謝。 – ernell