Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在活动之间传递字符串数组,而不使用Intent或bundle_Android_Arrays - Fatal编程技术网

Android 在活动之间传递字符串数组,而不使用Intent或bundle

Android 在活动之间传递字符串数组,而不使用Intent或bundle,android,arrays,Android,Arrays,希望在活动之间传递字符串数组,而无需在android中使用Intent或Bundle。 我该怎么做 我试过这根绳子 在第一个活动中,我声明了一个字符串: String str="abc"; // in activity1.java 在第二个活动中,我使用以下代码访问它: String str2=activity1.str; // in activity2.java 这个很好用。但是如何传递字符串数组呢?您可以将其设置为单独类或全局变量中的静态数组。如果您不想将其作为意图传递,可能的解决方案是

希望在活动之间传递字符串数组,而无需在android中使用Intent或Bundle。 我该怎么做

我试过这根绳子

在第一个活动中,我声明了一个字符串:

String str="abc"; // in activity1.java
在第二个活动中,我使用以下代码访问它:

String str2=activity1.str; // in activity2.java

这个很好用。但是如何传递字符串数组呢?

您可以将其设置为单独类或全局变量中的静态数组。

如果您不想将其作为意图传递,可能的解决方案是使用包含所需值的单例类

public class MyDataHolder
{
    private static MyDataHolder instance;
    String str;
    String[] myStringArray;
    public static MyDataHolder getInstance()
    {
        if (instance == null)
        {
            instance = new MyDataHolder();
        }
        return instance;

    }

 private MyDataHolder()
{
  myStringArray=new String[yourStringSize];
}

 public String getStringArray()
    {
        return myStringArray;
    }

    public void setStringArray(String[] str)
    {
        this.myStringArray= myStringArray;
    }

public String getStr()
    {
        return str;
    }

    public void setStr(String str)
    {
        this.str= str;
    }

}
然后在您的活动中声明实例变量,如下所示

MyDataHolder dataHolder = MyDataHolder.getInstance();
dataHolder.getStr();
dataHolder.setStr("");

由于它是一个单例,类中的数据将被共享。

使用字符串数组代替字符串有什么问题

你的计划:

在第一个活动中,我声明了一个字符串

String str=“abc”//在activity1.java中

在第二个活动中,我使用这段代码访问它

String str2=activity1.str;//在activity2.java中

也许你可以试试(在你的情况下):

在第一个活动中,我声明了一个字符串

String[]arrayStr={“abc”,“xyz”};//在activity1.java中

在第二个活动中,我使用这段代码访问它

String arrayStr2=activity1.arrayStr;//在activity2.java中


我得到了答案。这是我试过的一个片段

在第一个活动中,我使用公共说明符将数组声明为静态:

Activity1.java

public static String[] activity1_arr={'abc','efg','hij'}; // sample data. in my application am fetching it from database.
在第二个活动中,我使用带有数组的活动名称访问它

Activity2.java

String[] activity2_arr; // declaring array
activity_arr=Activity1.activity1_arr // accessing the array with class

这就成功了。

我必须在dataholder.setstr(“”)中传递任何内容吗?它是一个mutator函数,如果您想更改字符串pass的值,则它是一个值。如果您不想更改该值,则不需要使用该函数,因为您刚刚意识到需要一个字符串数组,并编辑代码来显示它。