当前位置: 首页 > 知识库问答 >
问题:

java.lang.空指针异常:尝试调用空对象引用上的虚拟方法'intorg.json.JSONObject.getInt(java.lang.String)'

巩光誉
2023-03-14

我正试图从这个链接将数据从Android应用程序发送到Raspberry pi。我已经执行了其中提到的所有步骤,但当我尝试运行该应用程序时,在android studio logcat中会出现一个错误。

错误类似于:java.lang.NullPointerExcture:尝试在空对象引用上调用虚拟方法'intorg.json.JSONObject.getInt(java.lang.String)'。

有错误的行是102

第80行:--

第102行:--

这是我的Android Studio代码。我在主活动中出错。java类:

美娜ctivity.java

public class MainActivity extends ActionBarActivity {

private ProgressDialog pDialog;

JSONParser jsonParser = new JSONParser();

EditText editText;

@Override
protected void onDestroy() {
    try {
        if (pDialog != null && pDialog.isShowing()) {
            pDialog.dismiss();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    super.onDestroy();
}

EditText editText2;
String String_name;
String Int_Part;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    editText = (EditText) findViewById(R.id.Name);
    editText2 = (EditText) findViewById(R.id.part_nr);
    String_name = editText.getText().toString();
    Int_Part = editText2.getText().toString();
}


public void Send(View view) {
    new Create_Part().execute();
}

class Create_Part extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Sending part to the database...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected String doInBackground(String... args) {


        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("Name", String_name));
        params.add(new BasicNameValuePair("part_nr", Int_Part));

        JSONObject json = jsonParser.makeHttpRequest("192.168.0.190/db_create.php.php", "POST", params);

        try {
            int success = json.getInt("success");

            if(success == 1){
                finish();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    protected void onPostExecute(String file_url){
        pDialog.dismiss();
    }
}
}

Logcat错误:

04-18 16:26:11.493 2818-3010/com.example.androidphp2 E/AndroidRuntime: FATAL 
EXCEPTION: AsyncTask #4
         Process: com.example.androidphp2, PID: 2818
         java.lang.RuntimeException: An error occurred while executing doInBackground()                                                
         at android.os.AsyncTask$3.done(AsyncTask.java:309)
         at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
         at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
         at java.util.concurrent.FutureTask.run(FutureTask.java:242)
         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
         at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.getInt(java.lang.String)' on a null object reference
         at com.example.androidphp2.MainActivity$Create_Part.doInBackground(MainActivity.java:102)
         at com.example.androidphp2.MainActivity$Create_Part.doInBackground(MainActivity.java:80)
         at android.os.AsyncTask$2.call(AsyncTask.java:295)
         at java.util.concurrent.FutureTask.run(FutureTask.java:237)
         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
         at java.lang.Thread.run(Thread.java:818) 

共有1个答案

龙志勇
2023-03-14

试着这样做:

int success = Integer.parseInt(json.getString("success"));

希望它能起作用

 类似资料:
  • 我已经到处搜索并尝试了他们关于如何调用虚拟方法的方法,但结果仍然是一样的。请帮助我,我不知道我的错误在哪里。 当我在手机上运行我的应用程序时,它会引发以下异常: 尝试对空对象引用调用虚拟方法“Java . lang . string my package . studentin information . get userid()” 方法showData() 班级学生信息() Firebase数据

  • 我正在尝试实现一个外部色轮,它应该出现在的片段一直在崩溃我的应用程序。我想我明白为什么会发生这种情况,但是在尝试修复它大约6个小时后,我就要放弃了。我知道之前有人问过这个问题,但是我无法为我的特定问题导出一个修复程序。下面是我的代码: 这是Logcat错误: 如果有人能帮我解决这个问题,那就太好了。提前谢谢^^ 编辑:这是我的XML,按要求:

  • 我的应用程序有问题,我想解决它,但我无法访问解决方案,请帮助我,,,

  • 问题内容: 我收到以下错误 尝试在空对象引用上调用虚拟方法’void android.widget.StackView.setAdapter(android.widget.Adapter)’ 在这条线上 完整的片段 EventsFragment.java 是 Stack_Adapter.java Stack_Items 问题答案: 您正在执行: 你是。返回。 你为什么用? 在哪里?您应该从正确的x

  • 我的应用程序有问题,想解决它,但我无法访问解决方案,请帮帮我,,

  • 我将使用库,并尝试在应用程序启动时使用以下方法获取令牌。 应用程序在发布时崩溃 AndroidManifest Build.Gradle: 此外,我尝试在SharedPreferences中缓存令牌,但似乎从未调用onNewToken()。 会有什么问题?