如何将二维数组从一个活动传递到另一个活动(包括数组包含的所有信息)

发布于 2024-12-14 18:49:23 字数 810 浏览 0 评论 0原文

我在活动 A 中有一个 2D 数组设置,然后我想在活动 B 中使用它。 我在网上查看了不同的示例,但无法让任何示例正常工作。

下面的代码编译正常,但我的 Toast 出现 java.lang.nullpointerexception 错误。 所以在我看来,好像我的数组结构正在被传递,但内容是null。 非常感谢任何帮助。

这是我到目前为止所做的:

活动 A

String[][] Question=new String[100][100];

Bundle b = new Bundle();
b.putSerializable("questionset", Question);
Intent intent = new Intent(this, QuizActivity.class);
startActivity(intent);

活动 B

    try{

        Bundle b=this.getIntent().getExtras();
        String[][] Questions = (String[][]) b.getSerializable("questionset");        
        Toast.makeText(this, Questions[2][1].toString(), Toast.LENGTH_SHORT).show();
    }

    catch(Exception e){
    Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();

    }

I have a 2D array setup in Activity A which I would then like to use in activity B.
I have looked at varying examples online but cant get any to work properly.

The code below compiles OK but I get an error with my Toast of java.lang.nullpointerexception.
so it looks to me as if my array structure is being passed through but the contents are null.
Any help is greatly appreciated.

Here is what I have so far.:

Activity A

String[][] Question=new String[100][100];

Bundle b = new Bundle();
b.putSerializable("questionset", Question);
Intent intent = new Intent(this, QuizActivity.class);
startActivity(intent);

Activity B

    try{

        Bundle b=this.getIntent().getExtras();
        String[][] Questions = (String[][]) b.getSerializable("questionset");        
        Toast.makeText(this, Questions[2][1].toString(), Toast.LENGTH_SHORT).show();
    }

    catch(Exception e){
    Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();

    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叹梦 2024-12-21 18:49:26
String[][] Question=new String[100][100]; 
Question[2][1]="sample";    // here
Bundle b = new Bundle(); 
b.putSerializable("questionset", Question); 
Intent intent = new Intent(this, QuizActivity.class); 
intent.putExtras(b);    // here
startActivity(intent); 

您的代码缺少数组内容的初始化并将其传递给意图。是故意的吗?对我来说,上面的代码运行得很好。

String[][] Question=new String[100][100]; 
Question[2][1]="sample";    // here
Bundle b = new Bundle(); 
b.putSerializable("questionset", Question); 
Intent intent = new Intent(this, QuizActivity.class); 
intent.putExtras(b);    // here
startActivity(intent); 

Your code lacks initialization of array contents and passing it to intent. Is it intentional? For me the above code works pretty well.

奢欲 2024-12-21 18:49:25

我总是使用存储对象类来解决这些问题,该存储对象类是单例,并且我可以在其中保存此类对象。

public class Model
{
    private static Model instance;

    private Model()
    {
        // singleton implementation
    }

    /**
     * Returns a valid instance of the model.
     * 
     * @return THE instance of the model.
     */
    public static Model getInstance()
    {

        if (instance == null)
        {
            instance = new Model();
        }

        return instance;
    }

    private String[][] arr;
    // + getter and setter methods for arr
}

I solve those problems always with a storage object class which is a singleton and where i can save such objects.

public class Model
{
    private static Model instance;

    private Model()
    {
        // singleton implementation
    }

    /**
     * Returns a valid instance of the model.
     * 
     * @return THE instance of the model.
     */
    public static Model getInstance()
    {

        if (instance == null)
        {
            instance = new Model();
        }

        return instance;
    }

    private String[][] arr;
    // + getter and setter methods for arr
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文