2012-11-16 20 views
0

您好我有下面的代碼,並在代碼Q1和Q2兩個問題內片段創建活動並沒有任何反應,當onListItemClick被稱爲

Q1)我已閱讀在這個網站上,你不能創建新的活動從一個片段,所以如果我在一個片段內,並且想要做

Intent intent = new Intent(this, DetailActivity.class); 
startActivity(intent); 

我該怎麼做?


Q2) 而且好像我不會進入我onListItemClick,我是不是做錯了這裏,是OnListItemsClick missplaced還是什麼?

我有一個創建一個新片段文件ActionBarMain.java Fragment1.java婁

//ActionbarMain.java

 fram1 = new FragMent1(); 
     fragMentTra.addToBackStack(null); 
     fragMentTra = getFragmentManager().beginTransaction().add(rl.getId(), fram1, "fram1"); 


//Fragment1.java 
    import android.app.Fragment; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 

    public class FragMent1 extends Fragment { 

    private String[] bookNames; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     ListView listView = new ListView(getActivity()); 
     ArrayAdapter<String> array = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1); 

     bookNames= bookNames(); 



     for (String str : bookNames) 
      array.add(str); 
     listView.setAdapter(array); 
     return listView; 
    } 

    private String[] bookNames(){ 
     SimpleBookManager.getSimpleBookManager().count(); 
     bookNames = new String[SimpleBookManager.getSimpleBookManager().count()]; 
     for(int i=0; i < SimpleBookManager.getSimpleBookManager().count(); i++){ 
      bookNames[i]= SimpleBookManager.getSimpleBookManager().getBook(i).getTitle(); 
     } 
     return bookNames; 
    } 

    public void onListItemClick(ListView l, View v, int position, long id) { 
     //Q1)Nothing happens here nothing is printed out and I get no errors when I click on 
     //an Item in the list, its like it don't come here, why? 
     Log.d("test", SimpleBookManager.getSimpleBookManager().getBook(position).getTitle()); 
     Log.d("test", "jje"); 

     //Q2)Call the DetailActivity.java how to achive this since I'm inside a fragment? 
    } 
} 
+0

你在哪裏設置longClickListener? – Cata

+0

你的問題似乎有點含糊,應該是'開始一個活動'而不是'創建活動' – Atrix1987

回答

0

更多信息?

事情是這樣的:

public class ListFragment extends android.support.v4.app.ListFragment { 
    /* 
    * (non-Javadoc) 
    * 
    * @see android.support.v4.app.Fragment#onCreate(android.os.Bundle) 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 

    /* 
    * (non-Javadoc) 
    * 
    * @see android.support.v4.app.Fragment#onActivityCreated(android.os.Bundle) 
    */ 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
       "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
       "Linux", "OS/2" }; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, values); 
     setListAdapter(adapter); 

    } 

    /* 
    * (non-Javadoc) 
    * 
    * @see 
    * android.support.v4.app.ListFragment#onListItemClick(android.widget.ListView 
    * , android.view.View, int, long) 
    */ 
    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     String item = (String) getListAdapter().getItem(position); 
     Intent intent = new Intent(getActivity().getApplicationContext(), 
        DetailActivity.class); 
      intent.putExtra("value", item); 
      startActivity(intent); 
     } 

    } 
} //END OF CLASS 
//END OF FILE 

上面的代碼爲我工作。

+0

那麼「fragMentTra = getFragmentManager()。beginTransaction().add(rl.getId(),fram1」,fram1 「);」它現在是一個listfragment而不是一個片段我該如何在「ActionBarMain.java」中執行該操作? – anders

+0

FragmentTransaction類型中的方法add(int,Fragment,String)不適用於參數(int,FragMent1,String) – anders

+0

顯然,我忘了設置一個監聽器,但setListAdapter(array);不工作 – anders

1

A1)

Intent intent = new Intent(getActvity(), DetailActivity.class); 
getActivity().startActivity(intent); 

這將打開細節活動。 getActivity()返回放置片段的活動。

我會回答你的第二季度的時候你爲什麼不使用ListFragment我將獲得有關問題