2015-12-10 96 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 
相关问题