2015-12-10 92 views
0

我正在android studio中創建一個android應用程序,我需要將字符串數組從一個類傳遞到另一個類。 它似乎沒有工作思想,我找不到什麼是錯的。 我試圖用構造函數來完成它。Java,試圖將字符串數組從一個類傳遞到另一個

我會省略不必要的代碼。

class MyFragment extends Fragment{ 


    //I create a string array to pass on the other class 

    public String likeTitles[] ={"mazda","whynot","OHYEAAAaa","ok","1983198312893"}; 


    public MainFragment(String s1[]){ 

      s1= likeTitles; 
     } 
} 


public class List extends ListActivity{ 

    String myStringArr[]=new String[5]; 

    MainFragment myFrag = new MainFragment(myStringArr); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getListView().getContext(), android.R.layout.simple_list_item_1, myStingArr); 
      getListView().setAdapter(adapter); 
    } 

我試圖使用類的字符串數組,它適用於我的適配器,但這是行不通的。

+0

這不是你如何通過片段和活動之間的數據。只需在這裏做一個簡單的搜索,即「在活動之間傳遞數據」,您就會發現需要了解的一切。標記爲dupe http://stackoverflow.com/questions/5194548/how-to-pass-data-between-fragments – NoChinDeluxe

+0

[如何在片段之間傳遞數據]的可能重複(http://stackoverflow.com/questions/ 5194548/how-to-pass-data-between-fragments) – NoChinDeluxe

回答

0

除了其他的答案,你想要將數據從Fragment的「likeTitles」變量傳遞給Activity的myStringArr變量,你必須這樣做:

class MyFragment extends Fragment{ 
    public String likeTitles[] = {"mazda","whynot","OHYEAAAaa","ok","1983198312893"}; 
    public MainFragment(String[] s1){ 
     for(int i = 0; i < likeTitles.length; i++) 
       s1[i] = likeTitles[i]; 
    } 
} 
+0

這個acually工作。 我不知道這件事,謝謝。 –

+0

理解你在做什麼(LOL)非常重要!試着認爲String []是公交車,每個位置[i]都是公交車的座位。這個功能的作用是將每個人從「likeTitles巴士」座位複製到「s1巴士」,得到它?在你的問題中,你試圖複製「總線」本身,而JAVA不允許這樣做,因爲「s1」var是通過值傳遞的,而不是引用。看到這個問題:http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – Christian

0

您應該使用靜態初始化將數據傳遞到Fragment

class MyFragment extends Fragment { 
    public static MyFragment newInstance(String[] array) { 
     MyFragment fragment = new MyFragment(); 
     Bundle bundle = new Bundle(); 
     bundle.putStringArray("yourArray", array); 
     fragment.setArguments(bundle); 
     return fragment; 
    } 
} 

這裏是如何你應該從你Activity調用它:如果

public class List extends ListActivity { 
    ... onCreate(...) { 
     String myStringArr[]=new String[5]; 

     MyFragment myFrag = MyFragment.newInstance(myStringArr); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getListView().getContext(), android.R.layout.simple_list_item_1, myStingArr); 
     getListView().setAdapter(adapter); 
    } 
} 
+0

謝謝。我嘗試以下 bundle.putStringArray(「likeTitles」,array); 而我得到java.lang.NullPointerException。 我應該讓數組靜態還是其他? –

+0

你確定你叫'Bundle bundle = new Bundle();'? –

+0

是的,我按你所說的做了一切。 其實我試圖從片段通過fata,而不是。 剛剛意識到我應該早點澄清一下。 –

0

創建靜態字符串數組變量一類

public class storeData{   
    public static String stringArray[]; 
} 

然後從花葯類訪問設置或獲取

String likeTitles[] ={"mazda","whynot","OHYEAAAaa","ok","1983198312893"}; 

storeData.stringArray = likeTitles; // to set array 

likeTitles = storeData.stringArray // to get array 
相關問題