NullPointerException beim Daten Empfangen von Intent.(mit Code)

  • Antworten:3
Antonio P.
  • Forum-Beiträge: 113

06.06.2014, 17:34:56 via Website

public class MainActivity extends Activity {

// ListView items
String[] provinces = new String[]{
        "Noord-Holland",
        "Zuid-Holland",
        "Flevoland",
        "Utrecht",
        "Zeeland",
        "Noord-Brabant",
        "Gelderland",
        "Overijssel",
        "Groningen",
        "Friesland",
        "Limburg",
        "Drente"
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    ListView provincelist = (ListView)findViewById(R.id.lvProvinceNames);

    //add header to listview
    LayoutInflater inflater = getLayoutInflater();
    ViewGroup header = (ViewGroup)inflater.inflate(R.layout.listheader, provincelist, false);
    provincelist.addHeaderView(header, null, false);


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, provinces);
    provincelist.setAdapter(adapter);
    provincelist.setOnItemClickListener(new OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // TODO Auto-generated method stub

            //we use the items of the listview as title of the next activity
            String province = provinces[position-1];

            //we retrieve the description of the juices from an array defined in arrays.xml
            String[] provincedescription = getResources().getStringArray(R.array.provincedescription);
            final String provincedesclabel = provincedescription[position-1];

            Intent intent = new Intent(getApplicationContext(), DetailActivity.class);
            intent.putExtra("province", province);
            intent.putExtra("provincedesclabel", provincedesclabel);

            startActivity(intent);


        }


    });

}

}

WENN ICH NUN DIE DATEN WIEDER HOLEN MÖCHTE IN DER ZWEITEN ACTIVITY UND SIE IN EINE GRIDVIEW SETZEN MÖCHTE ERSCHEINT EIN FEHLER: array = null ---> NullPointerException

public class DetailActivity extends Activity {

String title;
String[] array;

//int image;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detailactivity);

    TextView tvTitleLabel = (TextView)findViewById(R.id.tvTitleLabel);
    GridView gridView = (GridView) findViewById(R.id.gridView);

    ArrayAdapter<String> adapter;


    Bundle extras = getIntent().getExtras();

    if (extras != null) {

        title = extras.getString("province");
        tvTitleLabel.setText(title);

        /////Fehlermeldung: array = null --> NullPointerException**
        //array = extras.getStringArray("provincedesclabel");
        //adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array);
        //gridView.setAdapter(adapter);

    }

}

}

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.06.2014, 21:28:32 via Website

Hallo,
ich würde das eher so machen: http://stackoverflow.com/questions/5374546/passing-arraylist-through-intent

Außerdem ist Provincedesclabel in normaler Sting und kein Array:
siehe def:

 final String provincedesclabel = provincedescription[position-1];

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Antonio P.
  • Forum-Beiträge: 113

07.06.2014, 11:54:55 via Website

Danke es hat geklappt habs übersehen.

Nun ein denke ich einfaches Problem aber ich verstehe das nicht.

Es geht darum, nun habe ich über Intent meine Daten in die DetailActivity verschickt.

ABER:

Ich bekomme für jedes item den ich in der MainActivity anklicke immer die selben Strings in meine DetailActivity.

Ich möchte keine switch case oder if Anweisung machen.

Kann mir jemand bitte helfen und dieses Problem erklären das wäre super freundlich.

Beste Grüße
Ando

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.06.2014, 19:56:27 via Website

Also normalerweise sollte das nicht so sein.
Gehe mal mit dem Debugger rein und überprüfe die Integer in den Eckigen klammern und ob diese mit dem Index des Arrays übereinstimmen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten