neue Activity starten mit übergebenen Array

  • Antworten:7
P W
  • Forum-Beiträge: 4

21.05.2013, 13:22:19 via Website

Hallo Community,

ich hatte vor bei meiner App eine zweite Activity einzubauen. Das klappt auch, aber ich will in der zweiten Activity eine Liste mit Namen aus der ersten Activity einfügen. Um genauer zu sein, soll jeder Name eine neu Spalte in einer Tabelle bekommen. (Soll auf Android 2.2 Funktionieren!)

1. Activity:

1public class MainActivity extends Activity {
2
3public final static String stNewNames = "com.patrickwagner.fivedicewritedown.TableActivity";
4public final static String nPlayers = "com.patrickwagner.fivedicewritedown.TableActivity";
5
6private String[] sNewNames;
7private int numberPlayers;
8
9 @Override
10 protected void onCreate(Bundle savedInstanceState) {
11 super.onCreate(savedInstanceState);
12
13 sNewNames = new String[20];
14 numberPlayers = 0;
15
16 setContentView(R.layout.activity_main);
17 }
18
19 @Override
20 public boolean onCreateOptionsMenu(Menu menu) {
21 // Inflate the menu; this adds items to the action bar if it is present.
22 getMenuInflater().inflate(R.menu.main, menu);
23 return true;
24 }
25
26 /*
27 * der Button bNewName funktioniert
28 */
29 public void bNewName(View view){
30 EditText tNewName = (EditText) findViewById(R.id.tNewName);
31 if(tNewName != null){
32 String stNewName = ((EditText)findViewById(R.id.tNewName)).getText().toString();
33 ((EditText)findViewById(R.id.tNewName)).setText("");
34 TextView tvName = new TextView(this);
35 tvName.setText(stNewName);
36 ((LinearLayout)findViewById(R.id.listOfNames)).addView(tvName);
37 sNewNames[numberPlayers] = stNewName;
38 numberPlayers++;
39 }
40 }
41
42 /*
43 * der Button bStartActivity funktioniert nicht (es erscheint beim drücken des Buttons ein Fenster, dass die App beendet werden musste)
44 */
45 public void bStartActivity(View view){
46 Intent intent = new Intent(this, TableActivity.class);
47 intent.putExtra(stNewNames, sNewNames);
48 intent.putExtra(nPlayers, numberPlayers);
49 startActivity(intent);
50
51 }
52
53
54}

2. Activity:

[code]
public class TableActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Intent intent = getIntent();
String[] stNewNames = intent.getStringArrayExtra(MainActivity.stNewNames);
int nPlayers = intent.getIntExtra(MainActivity.nPlayers, 0);

for(int i = 0; i < nPlayers; i++){ // ohne die for-Schleife funktioniert der Button bStartActivity und die 2. Activity wird auch geöffnent (ohne die for-Schleife werden keine Namen hinzugefügt
Button bPlayer = new Button(this);
bPlayer.setText(stNewNames[i]);
((TableRow)findViewById(R.id.tableRow1)).addView(bPlayer); //tableRow1 ist in der XML Datei der 2. Activity definiert
}

setContentView(R.layout.activity_table);
}

}
[/code]

Ich hoffe ihr könnt mir helfen.

— geändert am 21.05.2013, 13:53:43

Antworten
Christian
  • Forum-Beiträge: 307

21.05.2013, 21:40:56 via Website

Hi P W,

in der 2ten Activity("TableActivity") solltest du erst setContentView(R.layout.activity_table); aufrufen und danach dann auf Elemente innerhalb dieses Layout zugreifen.

Also:
1protected void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.activity_table);
4
5 //und jetzt den rest
6
7}
8
9}
mfg Christian

— geändert am 21.05.2013, 21:44:08

Antworten
P W
  • Forum-Beiträge: 4

22.05.2013, 21:41:46 via Website

Vielen Dank Christian für die Rückmeldung, klingt auch logisch, funktioniert aber leider trotzdem nicht. :(

Liegt das Vielleicht an der Manifest datei? (Hier ein kleiner Ausschnitt)

1<application
2 android:allowBackup="true"
3 android:icon="@drawable/ic_launcher"
4 android:label="@string/app_name"
5 android:theme="@style/AppTheme" >
6 <activity
7 android:name="com.patrickwagner.fivedicewritedown.MainActivity"
8 android:label="@string/app_name" >
9 <intent-filter>
10 <action android:name="android.intent.action.MAIN" />
11
12 <category android:name="android.intent.category.LAUNCHER" />
13 </intent-filter>
14 </activity>
15 <activity
16 android:name="com.patrickwagner.fivedicewritedown.TableActivity"
17 android:label="@string/title_activity_table" >
18 <meta-data
19 android:name="android.support.PARENT_ACTIVITY"
20 android:value="com.patrickwagner.fivedicewritedown.MainActivity" />
21
22 </activity>
23 </application>

Antworten
Christian
  • Forum-Beiträge: 307

22.05.2013, 22:41:25 via Website

Hi P W,

ok bevor war hier noch ein bissel rum raten was sagt denn die LogCat warum deine App in der Schleife abschmiert.

mfg Christian

Antworten
P W
  • Forum-Beiträge: 4

01.06.2013, 13:33:23 via Website

Hi Christian,

Ich habe leider nicht herausgefunden, wo man die LogCat Datei gespeichert wird, oder wie ich eine erstelle.

Gruß

P W

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

01.06.2013, 13:48:11 via App

P W
Hi Christian,

Ich habe leider nicht herausgefunden, wo man die LogCat Datei gespeichert wird, oder wie ich eine erstelle.
App alogcat installieren und starten.

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
P W
  • Forum-Beiträge: 4

01.06.2013, 14:53:23 via Website

Vielen Dank Carsten,

Der Fehler liegt bei einer NullPointerException ("E/AndroidRuntime(12737): Caused by: java.lang.NullPointerException").

Das würde ja heißen, dass irgend ein Objekt gleich Null gesetzt wurde, aber welches?

Gruß

Patrick

Antworten
impjor
  • Forum-Beiträge: 1.793

01.06.2013, 22:10:17 via App

Genau welches?
Wie wär's wenn du etwas weiterliest und dir dann anschaust WO der Fehler entsteht : sowas wie MainActivity.java:234

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten