NullPointerException: lock == null
Je suis face à un problème dans une activité: je veux lire tous les fichiers de Ordinazioni.txt
correctement écrit dans l'activité précédente, les mettre dans un ArrayList
et d'écrire chaque élément de celle-ci à une base de données MySQL.
Maintenant, Le fichier PHP et le fichier sont corrects, je l'ai vérifié seul et de leurs œuvres, mais à ce point LogCat bloque l'application. Donc, ici, vous êtes à l'activité et le LogCat.
public class AggiungiProdotto extends Activity {
TextView tv1;
private static String indirizzo ="http://10.0.2.2/tesina/Aggiungi_Ordinazione";
FileInputStream in = null;
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(indirizzo);
StringBuilder sb = new StringBuilder();
int Tavolo = 1;
String line;
public ArrayList<String> Lettura = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.aggiungi_prodotto);
Invio();
}
public void Invio() {
try {
FileInputStream in = openFileInput("Ordinazioni.txt");
while ((line = bufferedReader.readLine()) != null) {
Lettura.add(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
Thread thread = new Thread() {
@Override
public void run() {
try {
for (int i = 0; i < Lettura.size(); i++) {
List<NameValuePair> Comanda = new ArrayList<NameValuePair>(2);
Comanda.add(new BasicNameValuePair("Nome", Lettura.get(i)));
Comanda.add(new BasicNameValuePair("Tavolo",
Integer.toString(Tavolo).trim()));
httppost.setEntity(new UrlEncodedFormEntity(Comanda));
ResponseHandler<String> responseHandler =
new BasicResponseHandler();
final String Risposta = httpclient.execute(httppost,
responseHandler);
tv1 = (TextView) findViewById(R.id.tv1);
tv1.setText("Response : " + Risposta);
}
} catch (ClientProtocolException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
};
thread.start();
}
}
LogCat erreurs:
03-14 18:40:42.028: E/AndroidRuntime(772): FATAL EXCEPTION: main
03-14 18:40:42.028: E/AndroidRuntime(772): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gabriele.tesina/com.gabriele.tesina.AggiungiProdotto}: java.lang.NullPointerException: lock == null
03-14 18:40:42.028: E/AndroidRuntime(772): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.os.Handler.dispatchMessage(Handler.java:99)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.os.Looper.loop(Looper.java:137)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.app.ActivityThread.main(ActivityThread.java:5039)
03-14 18:40:42.028: E/AndroidRuntime(772): at java.lang.reflect.Method.invokeNative(Native Method)
03-14 18:40:42.028: E/AndroidRuntime(772): at java.lang.reflect.Method.invoke(Method.java:511)
03-14 18:40:42.028: E/AndroidRuntime(772): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-14 18:40:42.028: E/AndroidRuntime(772): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-14 18:40:42.028: E/AndroidRuntime(772): at dalvik.system.NativeStart.main(Native Method)
03-14 18:40:42.028: E/AndroidRuntime(772): Caused by: java.lang.NullPointerException: lock == null
03-14 18:40:42.028: E/AndroidRuntime(772): at java.io.Reader.<init>(Reader.java:64)
03-14 18:40:42.028: E/AndroidRuntime(772): at java.io.InputStreamReader.<init>(InputStreamReader.java:122)
03-14 18:40:42.028: E/AndroidRuntime(772): at java.io.InputStreamReader.<init>(InputStreamReader.java:59)
03-14 18:40:42.028: E/AndroidRuntime(772): at com.gabriele.tesina.AggiungiProdotto.<init>(AggiungiProdotto.java:32)
03-14 18:40:42.028: E/AndroidRuntime(772): at java.lang.Class.newInstanceImpl(Native Method)
03-14 18:40:42.028: E/AndroidRuntime(772): at java.lang.Class.newInstance(Class.java:1319)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
03-14 18:40:42.028: E/AndroidRuntime(772): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
Que suis-je fais de mal?
bez u sont de passage null ici
inputStreamReader = new InputStreamReader(in);
OriginalL'auteur Eulante | 2013-03-14
Vous devez vous connecter pour publier un commentaire.
Je pense que là est le problème: vous ajouter FileInputStream qui est
NULL
en InputStreamReader.Également votre code est plus salissant. Regardez ici
Vous essayez de mettre à jour de l'INTERFACE utilisateur de Thread de travail donc, si vous corrigez premier problème, le problème suivant sera présent.
Vous ne pouvez pas effectuer d'action avec INTERFACE utilisateur à partir du Thread de travail. Il n'est pas permis. Seulement proviennent(UI) Thread peut faire des actions avec l'INTERFACE utilisateur.
Donc, si vous voulez le faire fonctionner, vous devez utiliser runOnUiThread() qui s'exécute déjà sur le Thread de l'INTERFACE utilisateur au lieu de la normale Fil.
Remarque: Pour améliorer votre code, je vous conseille d'utiliser AsyncTask pour effectuer des actions avec Internet et aussi l'accomplissement de l'INTERFACE utilisateur de mise à jour pendant /après certaines actions. AsyncTask est désigné pour des choses comme la vôtre. Voici bon tutoriel par Lars Vogel si vous n'avez jamais le mettre en œuvre avant.
vous êtes les bienvenus homme 🙂
OriginalL'auteur Simon Dorociak
En plus l'autre problème souligné, notez que vous essayez de mettre à jour votre
TextView
partir un nouveau Thread. Android INTERFACE utilisateur du système n'est pas thread-safe, de sorte que la ligne suivante est un autre problème:Vous pouvez résoudre ce problème avec cet exemple de la docs, sans trop de restructuration de votre code. Il utilise le
Handler
classe, pour en revenir au thread de l'INTERFACE utilisateur.NullPointerException
OriginalL'auteur wsanville
J'ai reçu une erreur similaire. La question que je portais s'est avéré être que j'ai été l'exécution de deux instances de Android Studio sur mon Mac et ils étaient en conflit les uns avec les autres alors que j'étais à l'exécution de l'application sur un périphérique.
Après j'ai fermé une instance d'Android Studio, j'ai été en mesure d'exécuter l'application sans problème.
OriginalL'auteur Jackson