NullPointerexception

ChrisiBoy

ChrisiBoy

Erfahrenes Mitglied
30
Code:
java.lang.RuntimeException: Unable to start activity ComponentInfo{at.ich/at.ich.My}: java.lang.NullPointerException
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
 at android.app.ActivityThread.startActivityNow(ActivityThread.java:1592)
 at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:130)
 at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:342)
 at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:676)
 at android.widget.TabHost.setCurrentTab(TabHost.java:345)
 at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:149)
 at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:559)
 at android.view.View.performClick(View.java:3122)
 at android.view.View$PerformClick.run(View.java:12006)
 at android.os.Handler.handleCallback(Handler.java:587)
 at android.os.Handler.dispatchMessage(Handler.java:92)
 at android.os.Looper.loop(Looper.java:132)
 at android.app.ActivityThread.main(ActivityThread.java:4028)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:491)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
 at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
 at at.ich.My.getInstalled(My.java)
 at at.ich.My.onCreate(My.java)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)

Das passiert wen ich versuche den Inhalt eines Ordner anzuzeigen, hat jemand eine Idee?

Sent from my GT-I9100 using Android-Hilfe.de App
 
Ohne Code lässt sich dazu leider gar nix sagen.
 
Sorry, hier:
Code:
 package at.ich;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Dialog;
import android.app.AlertDialog;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.ViewGroup;
import android.content.SharedPreferences;

public class My extends ListActivity
{
ArrayList<TexturePackLess> mymods;
    Context context;



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


setContentView(R.layout.text_list);

{
mymods = getInstalled();

ArrayAdapter<TexturePackLess> aa = new ArrayAdapter<TexturePackLess>(this,
 R.layout.list_item, my) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.list_item, parent, false);
convertView.setTag(parent);
}

TextView t;
t = (TextView) convertView.findViewById(R.id.textView1);
t.setText(my.get(position).name);
return convertView;

}

};
ListView lv = getListView();
lv.setAdapter(aa);
registerForContextMenu(lv);
}
}
public ArrayList<TexturePackLess> getInstalled() {
ArrayList<TexturePackLess> textarray = new ArrayList<TexturePackLess>();
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
String path_string = app_preferences.getString("pt_path", "null");
File textfold = new File(path_string + "/Pics");
File[] files = textfold.listFiles();
int i;
for (i = 0; i < files.length; i++) {
File file = files[i];

if (file.isDirectory()) {

} else {
if (file.getName().contains(".png")) {
String name = file.getAbsolutePath().substring(
textfold.getAbsolutePath().length() + 1);
String path = file.getAbsolutePath();
TexturePackLess text = new TexturePackLess(name, path, true);
textarray.add(text);
}
}
}
return textarray;
}
}

Sent from my GT-I9100 using Android-Hilfe.de App
 
Die NullPointerException tritt in der Methode getInstalled auf, beim schnellen drüberschauen, würde ich mal darauf achten, wie path_string belegt wird, denn du lädst da aus Einstellungen einen Wert mit einem variablen Key (so was immer schön in Konstanten auslagern, bzw. Konstanten nutzen, wenn schon definiert), das kann schnell in die Hose gehen.

Ansonsten alle anderen Werte im Debugger mal anschauen, denn irgendwo rufst du eine Methode auf einer Variable auf, die den Wert null hat.
 
  • Danke
Reaktionen: ChrisiBoy
Raki schrieb:
Die NullPointerException tritt in der Methode getInstalled auf, beim schnellen drüberschauen, würde ich mal darauf achten, wie path_string belegt wird, denn du lädst da aus Einstellungen einen Wert mit einem variablen Key (so was immer schön in Konstanten auslagern, bzw. Konstanten nutzen, wenn schon definiert), das kann schnell in die Hose gehen.

Ansonsten alle anderen Werte im Debugger mal anschauen, denn irgendwo rufst du eine Methode auf einer Variable auf, die den Wert null hat.

Path_String wird aus den shared preferences ausgelesen, debuggen kann ich nicht, da das Problem nicht bei mir auftritt sondern bei Google Play usern.

Sent from my GT-I9100 using Android-Hilfe.de App
 
ChrisiBoy schrieb:
Path_String wird aus den shared preferences ausgelesen, debuggen kann ich nicht, da das Problem nicht bei mir auftritt sondern bei Google Play usern.


Code:
String path_string = app_preferences.getString("pt_path", "null");
File textfold = new File(path_string + "/Pics");
File[] files = textfold.listFiles();
Das ist ganz klar ein Bug, denn wenn die SharedPreferences aus irgendeinem Grund noch nicht geschrieben sind oder der User die Daten der App löscht, steht da folgendes:

Code:
String path_string = "null";
File textfold = new File("null/Pics");
File[] files = null;
int i;
for (i = 0; i < [B]files.length[/B]; i++) {
 
  • Danke
Reaktionen: ChrisiBoy
Super erkannt, habe gar nicht daran gedacht ;) Und jetzt?

Sent from my GT-I9100 using Android-Hilfe.de App
 
Bei SharedPreferences grundsätzlich annehmen, dass sie leer sind. Also statt 'null' den richtigen Wert neu erzeugen und mit übergeben bei .getString()
 
  • Danke
Reaktionen: ChrisiBoy
ok.............. ja.........

Sent from my GT-I9100 using Android-Hilfe.de App
 

Ähnliche Themen

R
Antworten
1
Aufrufe
992
swa00
swa00
W
Antworten
11
Aufrufe
1.415
washpuda
W
O
Antworten
7
Aufrufe
930
Oli95
O
Zurück
Oben Unten