NullPointerException: lock == null

I have a problem in action: I want to read all the files from Ordinazioni.txt correctly written in the previous step, putting them in an ArrayList and writing each element from it to the MySQL database.

Now, the PHP file and the file are correct, I checked it myself and their work, but at this moment LogCat blocks the application. So, here you work and 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 Errors:

 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) 

What am I doing wrong?

+4
source share
3 answers
 FileInputStream in = null; InputStreamReader inputStreamReader = new InputStreamReader(in); 

I think the problem is here: you add a FileInputStream that is NULL in the InputStreamReader .

Also your code is more dirty. Look at here

 tv1 = (TextView) findViewById(R.id.tv1); tv1.setText("Response : " + Risposta); 

You are trying to update the UI from the workflow , so if you fix the first problem, the next problem will be the following.

You cannot activate the user interface from a workflow . This is not allowed. Only the origin stream (UI) can perform user interface operations.

So, if you want to get it working, you need to use runOnUiThread () , which is already running in the user interface thread instead of the regular thread.

Note. . To improve the code, I recommend that you use AsyncTask to perform actions on the Internet, as well as to update the user interface during / after some actions. AsyncTask is for things like yours. Here is a good Lars Vogel tutorial if you will never implement it before.

+11
source

In addition to the other problem noted, note that you are trying to update your TextView from a new thread. The Android UI system is not thread safe, so the following line is another problem:

 tv1.setText("Response : " + Risposta);' 

You can solve this problem with this example from the documentation without over-rebuilding your code. It uses the Handler class to return to the user interface thread.

+2
source

I was getting a similar error. The problem that I encountered turned out to be that I was running two instances of Android Studio on my Mac, and they were conflicting when I ran the application on the device.

After I closed one instance of Android Studio, I was able to run the application without problems.

0
source

Source: https://habr.com/ru/post/1469335/


All Articles