создание списка массивов и передача его из одного действия в другое - PullRequest
0 голосов
/ 05 августа 2011

Я студент и новичок в программировании. Это может быть простая ошибка, может кто-нибудь помочь мне исправить это. Я должен передать список массивов от одного действия к другому. В этом упражнении у меня есть 5 переключателей RB1, RB2 .... и я хочу передать содержание новостей [] в другое действие, которое называется display.

public void onClick(View v) {
        String[] news;
        news = new String[5];

        news[0] = "bbc";
        news[1] = "guardian";
        news[2] = "yahoo";
        news[3] = "sky";
        news[4] = "fox news";

        final ArrayList<String> arr = new ArrayList<String>();
        if (RB1.isChecked() == true)
            arr.add(news[0]);
        if (RB2.isChecked() == true)
             arr.add(news[1]);
        if (RB3.isChecked() == true)
            arr.add(news[2]);
        if (RB4.isChecked() == true)
            arr.add(news[3]);
        if (RB5.isChecked() == true)
            arr.add(news[4]);
if (v == Done)
        {
            Button done = (Button) findViewById(R.id.DONE);
            done.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view)
                {
                    Intent myIntent = new Intent(Read.this, display.class);
                    myIntent.putExtra("pass",arr);
                    startActivity(myIntent);
                }
            });
        }

коды для следующего действия следующие:

                    Intent myintent = getIntent();
        String[] Array = myintent.getStringArrayExtra("pass");

        for (int i = 0; i < Array.length; i++)
            Log.v(LOG_TAG, "THE website Is :" +Array[i]);

Я получаю исключение java.lang.NullPointerException в приведенных выше двух строках, т.е.

for (int i = 0; i < Array.length; i++)
                Log.v(LOG_TAG, "THE website Is :" +Array[i]);

Можете ли вы сказать мне, почему? заранее спасибо

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Прежде всего, некоторые соглашения: Начальные имена переменных в нижнем регистре, поэтому array вместо Array.Это избавит вас от некоторой путаницы позже.

Попробуйте сделать это следующим образом: этот поток:

Bundle b=new Bundle();
b.putStringArray(key, new String[]{value1, value2});
Intent i=new Intent(context, Class);
i.putExtras(b);

и

Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);
1 голос
/ 05 августа 2011

Используйте Bundle следующим образом:

Bundle bundle = new Bundle();
bundle.putStringArray(key, news);
myIntent.putExtra("pass",bundle);
startActivity(myIntent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...