【问题标题】:Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object refere [duplicate]尝试在空对象引用上调用虚拟方法“void android.view.View.setOnClickListener(android.view.View$OnClickListener)”[重复]
【发布时间】:2020-04-14 08:49:48
【问题描述】:

我知道我在 stackoverflow 上看到过同样的问题并尝试了很多解决它但我失败了,我是 android studio 的新手,只想读取 json 文件但它总是给我这个错误,请不要给我负面声誉或提出重复的问题。我是初学者,这是我花在这上面的第五天 功能很简单,它会从服务器读取json文件并打印在mainactivity中,一个activity会是fetch activity会在后台做作业

这是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/parse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="683dp"
        android:text="parse" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/parse">

        <TextView
            android:id="@+id/prasedata"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="fetch text here" />
    </ScrollView>


</RelativeLayout>

这是主要活动

package com.codewithosama.volleydemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.android.volley.toolbox.JsonArrayRequest;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.jar.JarEntry;

public class MainActivity extends AppCompatActivity {
    Button click ;
    public  static  TextView data ;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        click = (Button) findViewById(R.id.parse);
        data = (TextView)findViewById(R.id.prasedata);
        click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fetchData process =new fetchData();
                process.execute();

            }
        });
    }
}

这是 fetchDAta 活动

package com.codewithosama.volleydemo;

import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class fetchData extends AsyncTask<Void, Void, String> {
    String data="";

    @Override
    protected String doInBackground(Void... voids) {
        try {
            URL url = new URL("https://jsonplaceholder.typicode.com/todos/1");
            HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
            InputStream inputStream = httpsURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line="";
            while (line != null){
                line=bufferedReader.readLine();
                data= data + line;
            }


        }catch (MalformedURLException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String aVoid) {
        super.onPostExecute(aVoid);
        MainActivity.data.setText(this.data);
    }
}

【问题讨论】:

    标签: java android nullpointerexception


    【解决方案1】:

    您忘记在您的MainActivity 中拨打setContentView()。 所以应该是

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main) // your activity's layout
        // rest of your code
    }
    

    【讨论】:

    • 2020-04-14 14:09:57.829 2658-2658/? E / memtrack:无法加载memtrack模块(没有这样的文件或目录)2020-04-14 14:09:57.830 2658-2658/? E/android.os.Debug:加载memtrack模块失败:-2
    • 这些错误正在显示,现在没有按钮或文本视图显示在上面
    • @Osama 你把R.layout.activity_main改成你的布局ID了吗?
    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多