Nullpointer bei Button klick (hilfe, dringend)

  • Antworten:16
Kevin Ludwig
  • Forum-Beiträge: 11

28.06.2012, 19:27:51 via Website

Hallo,
und zwar wir müssen von der schule aus eine Fahrtenbuch App machen und seit neustem bekomme ich einen null pointer bei folgender zeile:
1findViewById(R.id.btnSavedDrives).setOnClickListener(new OnClickListener(){ //hier gibts n null pointer.

der ganze code:
[code]package fahrtenbuch.gui;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

public class FahrtenbuchActivity extends Activity {
private static enum BackKeyAction {QUIT, MAIN_MENU, NEW_DRIVES, SAVED_DRIVES}
private BackKeyAction backKeyAction;
private final String SAVE_FILE = "test.txt";
String inhalt = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setMainMenuView();
getSavedDrives();
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
if(backKeyAction == BackKeyAction.QUIT) {
// quit();
}
if(backKeyAction == BackKeyAction.MAIN_MENU) {
setMainMenuView();
}
return true;
}
return super.onKeyDown(keyCode, event);
}

public void setMainMenuView(){
// this.setContentView(R.layout.maintest);
this.setContentView(R.layout.main);
this.backKeyAction = BackKeyAction.QUIT;

findViewById(R.id.btnNewDrive).setOnClickListener(new OnClickListener(){
public void onClick(View v){
setNewDriveView();
}
});

findViewById(R.id.btnSavedDrives).setOnClickListener(new OnClickListener(){ //hier gibts n null pointer.
public void onClick(View v){
getSavedDrives();
}
});

}

public String gt() {
Timestamp timestamp = new Timestamp(new Date(0).getTime());
System.out.println(timestamp.toString());
return timestamp.toString();
}

public void getSavedDrives(){
this.setContentView(R.layout.gespeichertefahrten);
this.backKeyAction = BackKeyAction.MAIN_MENU;
String content = "";
System.out.println("load");
FileInputStream file;
ArrayList<String> data = new ArrayList<String>();
ArrayList<String[]> details = new ArrayList<String[]>();
try {
file = openFileInput(SAVE_FILE);

try {
String line;
Integer a = 0;
Integer b = 1;
DataInputStream dis = new DataInputStream(file);
while((line=dis.readLine())!=null){
Log.v("Outp", line);

String[] splitArray = line.split(";");
// data.add(splitArray[0] + " " + splitArray[3] + " - " + splitArray[4]);
data.add(splitArray[0]);
details.add(splitArray);

}
file.close();
} catch(IOException e) {e.printStackTrace();}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(content);
String[] array = new String[data.size()];
for(int i = 0; i < data.size(); i++) {
array[i] = data.get(i);
}
ListView lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(new ArrayAdapter<String>(this, R.id.listItemTV,array));
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

}
});

}

public void setNewDriveView(){
this.setContentView(R.layout.newdrive);
this.backKeyAction = BackKeyAction.MAIN_MENU;

gt();


findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
public void onClick(View view){
setNewDriveView();
}
});



findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
public void onClick(View view){
try {
TextDateiSpeicherung.createFile();
inhalt = TextDateiSpeicherung.loadFromFile(openFileInput(SAVE_FILE));
TextDateiSpeicherung.saveToFile(openFileOutput(SAVE_FILE, Context.MODE_PRIVATE), inhalt + "10.06.2012" + ";" +
"12:25" + ";" +
"12:35" + ";" +
((EditText) findViewById(R.id.editText1)).getText().toString() + ";" +
((EditText) findViewById(R.id.editText2)).getText().toString() + ";" +
((EditText) findViewById(R.id.editText3)).getText().toString() + "\n");
Toast.makeText(getBaseContext(),"Fahrt gespeichert",Toast.LENGTH_SHORT).show();
setNewDriveView();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

}
}
[/code]

Wäre euch echt dankbar wenn mir jemand helfen könnte.

Crosspost

— geändert am 28.06.2012, 19:34:04

Antworten
Michele
  • Forum-Beiträge: 1.525

28.06.2012, 19:37:51 via Website

Versuch mal (new View.OnClickListener() {

und nicht (new OnClickListener() {



LG

— geändert am 28.06.2012, 19:38:00

Antworten
Kevin Ludwig
  • Forum-Beiträge: 11

28.06.2012, 19:43:08 via Website

Danke, aber geht immernoch nicht.. :(

Antworten
Michele
  • Forum-Beiträge: 1.525

28.06.2012, 19:53:13 via Website

War nur ne schnelle Lösung. Ich gucke mir das nachher in ruhe an.
Muss mein Eclipse usw neu machen. Bis dahin hilft dir bestimmt einer von hier =).





LG

Antworten
Kevin Ludwig
  • Forum-Beiträge: 11

28.06.2012, 20:01:28 via Website

Michele
War nur ne schnelle Lösung. Ich gucke mir das nachher in ruhe an.
Muss mein Eclipse usw neu machen. Bis dahin hilft dir bestimmt einer von hier =).





LG

Danke :-)

ich kann auch das Projekt irgendwo hochladen, dass ihr alle sachen habt. Der scheiß ist, das ding bekommt am Montag eine note und sollte gehen. Ich bin euch jetzt schon sehr dankbar. Auf Android-Pit ist halt immer verlass :-)

Edit: https://www.dropbox.com/s/wd318oj87evg4jh/fahrtenbuch_28.06.12.zip

— geändert am 28.06.2012, 20:43:25

Antworten
ToBe
  • Forum-Beiträge: 52

29.06.2012, 00:49:21 via Website

Das klingt im ersten Augenblick danach das der Button mit der ID btnSavedDrives nicht in der von dir gesetzten Content-View "main.xml" vorhanden ist. Ich sehe das maintest.xml auskommentiert wurde? Bist du dir sicher das der Button in der main.xml die ID btnSavedDrives besitzt?

Antworten
Kevin Ludwig
  • Forum-Beiträge: 11

29.06.2012, 07:42:34 via Website

Der Button hat die ID. Im Crosspost habe ich die .zip-Datei Verlinkt.

MfG
Kevin

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

29.06.2012, 12:05:51 via Website

Das beantwortet nicht die Frage.

In welchem der beiden Layouts ist der Button und ist dieses Layout auch im Sourcecode aktiv. Du hast zwei setContentView() in der Methode aber nur eine ist aktiv. Ist der Button in diesem aktiven Layout?

Antworten
Aeefire
  • Forum-Beiträge: 172

29.06.2012, 15:42:25 via Website

das klingt mir sehr danach, dass die Ressource-ID (des Buttons) im "geladenen" Layout nicht vorhanden ist! Das UNBEDINGT überprüfen! (auch klein/großsschreibung beachten etc.)

Antworten
Gelöschter Account
  • Forum-Beiträge: 80

29.06.2012, 16:46:49 via Website

[Edit: falscher Vorschlag (verguckt) - Ich glaube auch es liegt an der Ressourcen ID]

— geändert am 29.06.2012, 16:50:16

Antworten
Kevin Ludwig
  • Forum-Beiträge: 11

29.06.2012, 17:27:34 via Website

Hat sich erledigt, mir wurde im Crosspost geholfen. Aber trzd danke. :-)

Antworten
Maximilian O
  • Forum-Beiträge: 990

29.06.2012, 19:03:58 via App

Dann teile uns wenigstens die Lösung mit...

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

ToBe

Antworten
Michele
  • Forum-Beiträge: 1.525

29.06.2012, 23:20:48 via Website

Kevin Ludwig
Hat sich erledigt, mir wurde im Crosspost geholfen. Aber trzd danke. :-)


Dann teile uns doch die lösung mit? Wir haben doch versucht dir zu helfen.


LG

Antworten
Kevin Ludwig
  • Forum-Beiträge: 11

30.06.2012, 11:27:38 via Website

Lösung:
list_item.xml:
1<?xml version="1.0" encoding="utf-8"?>
2<TextView xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:padding="10dp"
6 android:textSize="16sp" >
7</TextView>

Edit: Nur habe ich noch Probleme mit der Detailansicht

— geändert am 30.06.2012, 11:56:03

Antworten
Kevin Ludwig
  • Forum-Beiträge: 11

30.06.2012, 15:08:05 via Website

Ja, also jetzt geht es.

Antworten