2016-04-15 21 views
0

我有一個固定的標籤佈局與3個選項卡。我試圖在tab1中使用ArrayList將項目添加到tab2的列表視圖中,它們都擴展了Fragment。以下代碼僅在活動擴展活動時才起作用。任何人都可以幫助我解決問題的答案。我怎樣才能得到一個按鈕來添加一個項目到一個數組列表,然後到另一個片段活動的列表視圖

我做了一些測試用的按鈕,增加了同樣的活動佈局內的ListView一個獨立的活動,這是工作的一個

MainActivty

public class MainActivity extends Activity { 
private ListView LView; 
ArrayList <String> arrayList = new ArrayList<String>(); 



/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    LView = (ListView) findViewById(R.id.listview); 


} 

public void sendToListView(View view) { 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); //Sets the adapter to hold the List View 
    LView.setAdapter(adapter); //Adds to the List View 
    arrayList.add("Thursday"); 

} 

}

activity_main

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button"/> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="add" 
    android:onClick="sendToListView" 
    android:id="@+id/button"/> 
</RelativeLayout> 

這MainActivity擴展片段,並有一個錯誤,當我嘗試執行相同的操作

public class MainActivity extends Fragment implements View.OnClickListener { 
private ListView LView; 
ArrayList <String> arrayList = new ArrayList<String>(); 
@Override 
public View onCreateView(LayoutInflater inflater, 
         ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.activity_main, 
      container, false); 
    LView = (ListView) view.findViewById(R.id.listview); 
    return view; 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()){ 
     case R.id.button: 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); //Here is the error 
      LView.setAdapter(adapter); //Adds to the List View 
      arrayList.add("Thursday"); 
      break; 
    } 
} 

}

我怎樣才能得到這個工作的片段,我怎麼可能的hve這種操作是發送到其他片段活動選項卡並保存到SharedPreferences

回答

0

我認爲這可能與您的片段中的一般方法有關。在你的活動中,你使用XML來指定一個方法來運行一個按鈕的點擊,這非常有意義。在片段中,您正在重寫onClick方法,但無法通過任何方式激活它。相反,我會再次在片段XML中定義一個按鈕,並在您的片段中找到ViewById,並在其中添加您的單擊方法,而不是您當前如何執行該操作。或者,如果確實希望用戶能夠點擊片段中的任意位置,則可以在片段的視圖中添加onclick處理程序。

Button yourFragmentButton = (Button) findViewById(R.id.yourFragementButtonId); 
yourFragmentButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); 

     //Sets the adapter to hold the List View 
     LView.setAdapter(adapter); //Adds to the List View 
     arrayList.add("Thursday"); 
    } 
}); 
+0

我有東西與你分享,我試圖通過擴展ListFragment像這樣的視頻在youtube https://www.youtube.com/watch?v=D2mMwWiZBmE這樣做,它在一個新的項目獨立工作,但與我已經有一個它不起作用。我自定義的PageAdapter給我一個錯誤,當我擴展一個活動與ListFragment和其他與片段。如果我試圖用ListFragment擴展全部,它會崩潰。任何想法解決這個問題? – masterplox

0

您在混淆Activity和Fragment的概念。具有片段並不排除底層活動的必要性,因爲每一個片段需要,因爲它是在AndroidDevelopers陳述上的活動被插入要被顯示:

甲片段表示行爲或用戶的一部分活動中的界面

要了解更多信息,請登錄:http://developer.android.com/guide/components/fragments.html

但是,即使考慮到你正確安裝的片段與您正在使用它的正確的佈局,你仍然需要做一些改變,如果你需要使用此片段:

public class MyFragment extends Fragment implements View.OnClickListener { 
    private ListView LView; 
    ArrayList <String> arrayList = new ArrayList<String>(); 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
         ViewGroup container, 
         Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_main, 
      container, false); 
     LView = (ListView) view.findViewById(R.id.listview); 
     Button myButton = view.findViewById(R.id.button); 
     myButton.setOnClickListener(this); 
     return view; 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.button: 
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, arrayList); //Here is the error 
       LView.setAdapter(adapter); //Adds to the List View 
       arrayList.add("Thursday"); 
       break; 
     } 
} 
+0

我不斷收到ArrayAdapter 行中的錯誤,它的下劃線爲紅色。「無法解析構造函數」ArrayAdapter(com.ub.rdm.listview.MainActivity,int,java.util.ArrayList )' 「 – masterplox

+0

更改新的ArrayAdapter (this,android.R.layout.simple_list_item_1,arrayList);到新的ArrayAdapter (getContext(),android.R.layout.simple_list_item_1,arrayList); – holandaGo

相關問題