douhanzhen8927 2017-08-06 07:04
浏览 177
已采纳

当我从数据库显示数据时崩溃应用程序

when I press the button "btUpdPlata" That is placed in the Activity MainActivity and shows the data of the column "Plata" (numerical value in the database) of the respective user after login stops working the app

I did several tests, but it always ends up crashing the app, What can be?

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();


?>

Background 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(',','
'));


    }
}



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

In 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:

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

UPDATE

crash:

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) 

UPDATE 2

new crash after fix 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)
  • 写回答

1条回答 默认 最新

  • dpdkqls6399 2017-08-06 07:41
    关注

    You can see in your code, You used PlataET at first line and its giving NullPointerException, and we can see you created that object after couple of lines, So create and then use that.

    Try like this,

    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");
    

    Edited for Error 2: You are checking the string with null object, So change the condition like this,

    if (!TextUtils.isEmpty(result) && result.contentEquals("platita")) {
       ob.PlataET.setText(result.toString().replace(',','
    '));
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器