2017-08-06 79 views
1

当我按下“btUpdPlata”按钮时,该按钮位于活动MainActivity中,并显示相应列的“Plata”(数据库中的数值)列的数据用户登录后停止工作应用程序当我显示数据库中的数据时,崩溃应用程序

我做了几个测试,但它总是最终崩溃的应用程序,可以是什么?

plata.php

<?php 
include_once("conn.php"); 

$plata=$_GET['plata']; 
$query="SELECT * FROM signup where plata='{$plata}'"; 


$result=mysqli_query($conn ,$query); 
while($row=mysqli_fetch_array($result)){ 

$output_info = "Plata ".$row['plata']; 


echo "platita"; 
echo $output_info; 


} 
mysqli_close(); 


?> 

背景Plata的

public class BackgroundWorkerPlata extends AsyncTask<String,Void,String> { 
MainActivity ob; 
Context context; 
AlertDialog alertDialog; 
BackgroundWorkerPlata (Context ctx) { 
    context = ctx; 
} 
@Override 
protected String doInBackground(String... params) { 
    String type = params[0]; 
    String login_url = "insert url here"; 
    if(type.equals("plata")) { 
     try { 
      String plata = params[5]; 
      URL url = new URL(login_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setDoInput(true); 
      OutputStream outputStream = httpURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
      String post_data = URLEncoder.encode("plata","UTF-8")+"="+URLEncoder.encode(plata,"UTF-8"); 
      bufferedWriter.write(post_data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 
      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
      String result=""; 
      String line=""; 
      while((line = bufferedReader.readLine())!= null) { 
       result += line; 
      } 
      bufferedReader.close(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 
      return result; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return null; 
} 

@Override 
protected void onPreExecute() { 
    alertDialog = new AlertDialog.Builder(context).create(); 
    alertDialog.setTitle("Cargando dinero"); 
} 

@Override 
protected void onPostExecute(String result) { 
    // alertDialog.setMessage(result); 
    // alertDialog.show(); 
    if (result.contentEquals("platita")) { 
     ob.PlataET.setText(result.toString().replace(',','\n')); 


    } 
} 



@Override 
protected void onProgressUpdate (Void...values){ 
    super.onProgressUpdate(values); 
} 
} 

在MainActivity:

public void cambiarTextoUpdatePlata(View v) { 
    String plata = PlataET.getText().toString(); 
    String type = "plata"; 
    BackgroundWorkerPlata backgroundWorkerPlata = new BackgroundWorkerPlata(this); 
    backgroundWorkerPlata.execute(type, plata); 

    TextView updatePlata = (TextView) findViewById(R.id.PlataET); 
    updatePlata.setText("Tienes " + plata + " Pesos"); 
    { 
    } 

按钮:

<Button 
    android:id="@+id/btUpdPlata" 
    android:onClick="cambiarTextoUpdatePlata" 
    android:text="Actualizar Plata" /> 

UPDATE

崩溃:

08-06 03:11:05.690 23352-23352/net.prontocars.prontocars E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: net.prontocars.prontocars, PID: 23352 
                     java.lang.IllegalStateException: Could not execute method for android:onClick 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
                      at android.view.View.performClick(View.java:5637) 
                      at android.view.View$PerformClick.run(View.java:22429) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                     Caused by: java.lang.reflect.InvocationTargetException 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                      at android.view.View.performClick(View.java:5637)  
                      at android.view.View$PerformClick.run(View.java:22429)  
                      at android.os.Handler.handleCallback(Handler.java:751)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6119)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference 
                      at net.prontocars.prontocars.MainActivity.cambiarTextoUpdatePlata(MainActivity.java:45) 
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
                      at android.view.View.performClick(View.java:5637)  
                      at android.view.View$PerformClick.run(View.java:22429)  
                      at android.os.Handler.handleCallback(Handler.java:751)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6119)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  

更新2

新的崩溃修复的TextView

08-06 05:03:31.719 12631-12631/net.prontocars.prontocars E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: net.prontocars.prontocars, PID: 12631 
                     java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contentEquals(java.lang.CharSequence)' on a null object reference 
                      at net.prontocars.prontocars.BackgroundWorkerPlata.onPostExecute(BackgroundWorkerPlata.java:99) 
                      at net.prontocars.prontocars.BackgroundWorkerPlata.onPostExecute(BackgroundWorkerPlata.java:43) 
                      at android.os.AsyncTask.finish(AsyncTask.java:667) 
                      at android.os.AsyncTask.-wrap1(AsyncTask.java) 
                      at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:684) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+0

分享您的错误日志堆栈跟踪还 – Arshad

回答

0

你可以在你的代码中看到,你在第一线用PlataET及其给NullPointerException异常,我们可以看到你在几行后创建了这个对象,所以创建并使用它。

尝试这样,

public void cambiarTextoUpdatePlata(View v) { 
    PlataET = (TextView) findViewById(R.id.PlataET); 
    String plata = PlataET.getText().toString(); 
    String type = "plata"; 
    BackgroundWorkerPlata backgroundWorkerPlata = new BackgroundWorkerPlata(this); 
    backgroundWorkerPlata.execute(type, plata); 


    PlataET.setText("Tienes " + plata + " Pesos"); 

编辑的错误2: 您检查与空对象的字符串,所以改变这样的状况,

if (!TextUtils.isEmpty(result) && result.contentEquals("platita")) { 
    ob.PlataET.setText(result.toString().replace(',','\n')); 
} 
+0

出现“Tiene”和“Pesos”,但“plata”的值未出现并崩溃 – Vampi

+0

再次检查您的崩溃记录,您是否得到相同的错误。 –

+0

发表编辑新崩溃,编辑:我编辑更新2崩溃 – Vampi

相关问题