Sri GnS
Sri GnS

Reputation: 71

Error RunTimeException unable to instantiate activity ComponentInfo{...}: java.lang.NullPointerException

I got an while i am doing my code

My Error is :

Unable to instantiate activity ComponentInfo{com.example.example/com.example.sample.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference


import androidx.appcompat.app.AppCompatActivity;

import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.jaredrummler.android.processes.AndroidProcesses;
import com.jaredrummler.android.processes.models.AndroidAppProcess;
import com.jaredrummler.android.processes.models.Stat;
import com.jaredrummler.android.processes.models.Statm;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    List<RunningApplication> runningApplicationList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        Button send = (Button) findViewById(R.id.button);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getRunningApps();
            }
        });


    }

    public void getRunningApps() {
        List<AndroidAppProcess> processes = AndroidProcesses.getRunningAppProcesses();
        PackageManager pm = getPackageManager();
        for (AndroidAppProcess pro : processes) {
            try {
                String proccessname = pro.name;
                Stat stat = pro.stat();
                int pid = stat.getPid();
                int parentProccessId = stat.ppid();
                long startTime = stat.stime();
                int policy = stat.policy();
                char state = stat.state();

                Statm statm = pro.statm();
                long totalSizeofProccess = statm.getSize();
                long residentSetSize = statm.getResidentSetSize();

                PackageInfo packageInfo = pro.getPackageInfo(MainActivity.this,0);

                //get the app name
                String appName = packageInfo.applicationInfo.loadLabel(pm).toString();
                //Get the app icon
                Drawable appIcon = packageInfo.applicationInfo.loadIcon(pm);
                //Add it to your list of running app
                RunningApplication ra = new RunningApplication(appName,startTime,String.valueOf(pid),appIcon);
                runningApplicationList.add(ra);
                Log.e("APPNAME : ", appName);
            } catch (Exception ex) {
                Log.e("APPNAME.CONTEXT",ex.getMessage());
            }
        }
    }

}```

Upvotes: 3

Views: 11760

Answers (1)

saman
saman

Reputation: 96

You're getting NPE because you are trying to create a new instance of your button before calling setContentView(R.layout.activity_main); This is what is causing your app to crash.

Consider changing your onCreate method to this snippet below:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button send = (Button) findViewById(R.id.button);


    send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getRunningApps();
        }
    });


}

Upvotes: 4

Related Questions