【问题标题】:Nullpointerexception by changing activityNullpointerexception 通过更改活动
【发布时间】:2019-07-23 13:37:56
【问题描述】:

我想用 startActivity(intent) 更改活动,但我得到了 NullpointerException。

我尝试了我在网络上阅读的所有内容。

我的代码

 public void starteFehler(int fall){
     Intent fehler = new Intent(this, Fehlermeldung.class);
     fehler.putExtra("fall", fall);
     startActivity(fehler);
 }

LogCat

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.vtas_kassenterminal, PID: 27284
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
        at android.app.Activity.startActivityForResult(Activity.java:4622)
        at android.app.Activity.startActivityForResult(Activity.java:4579)
        at android.app.Activity.startActivity(Activity.java:4940)
        at android.app.Activity.startActivity(Activity.java:4908)
        at com.example.vtas_kassenterminal.Startbildschirm.starteFehler(Startbildschirm.java:172)
        at com.example.vtas_kassenterminal.Startbildschirm$4.onResponse(Startbildschirm.java:142)
        at com.example.vtas_kassenterminal.Startbildschirm$4.onResponse(Startbildschirm.java:128)
        at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:7000)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

这里是 Fehlermedlung.class

public class Fehlermeldung extends AppCompatActivity {

    private long zeit;
    public int fall;
    private Handler handler;

    Parameter parameter;

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

        zeit = parameter.dauerFehl;

        TextView textView_meldung = findViewById(R.id.textView_meldung);
        TextView textView_id = findViewById(R.id.textView_id);
        TextView textView_loesung = findViewById(R.id.textView_loesung);

        handler = new Handler();
        final Intent startbildschirm = new Intent(this, Startbildschirm.class);

        Runnable goBack = new Runnable() {
            @Override
            public void run() {
                startActivity(startbildschirm);
            }
        };
        fall = getIntent().getIntExtra("fall", 0);
        switch (fall){
            case 0: textView_meldung.setText("Interner Fehler");
                    textView_id.setText("");
                    textView_loesung.setText("Bitte sprechen Sie das Personal am Empfang an.");
                    handler.postDelayed(goBack, zeit);
                    break;
            case -1:textView_meldung.setText("Benutzer unbekannt");
                    textView_id.setText("ID: XXXXXXX");
                    textView_loesung.setText("Bitte sprechen Sie das Personal am Empfang an.");
                    handler.postDelayed(goBack, zeit);
                    break;
            case -2:textView_meldung.setText("Chip ID bereits vorhanden");
                    textView_id.setText("");
                    textView_loesung.setText("Bitte nutzen Sie eine andere Chip ID.");
                    handler.postDelayed(goBack, zeit);
                    break;
            case -3:textView_meldung.setText("Keine Serververbindung möglich.");
                    textView_id.setText("");
                    textView_loesung.setText("Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut oder sprechen das Personal am Empfang an.");
                    handler.postDelayed(goBack, zeit);
                    break;

        }
    }
}

【问题讨论】:

  • 你在哪里以及如何打电话给starteFehler()
  • 我在 Volley Request 中调用 starteFehler。
  • 你能发帖Fehlermeldung类吗?
  • 直接从异步操作启动活动是有风险的。如果您的Startbildschirm 实例已被销毁,您将在调用startActivity() 时崩溃,可能有此例外。
  • 我打赌你有像new Startbildschirm().startAsyncCall() 这样愚蠢的东西......但显然你不应该创建派生自Activity的类的新实例

标签: java android nullpointerexception start-activity


【解决方案1】:

在这一行中,zeit = parameter.dauerFehl; 参数似乎为空。

【讨论】:

  • 程序甚至没有到达这一行...异常是关于在 null 上调用 getApplicationThread()
【解决方案2】:

我认为你没有在你的 Fehlermedlung.class 中初始化参数类你应该初始化

参数parm=新参数();

parm..dauerFehl;

【讨论】:

  • 程序甚至没有到达这一行......异常是关于在 null 上调用 getApplicationThread()
猜你喜欢
  • 1970-01-01
  • 2022-09-30
  • 2012-01-16
  • 1970-01-01
  • 2011-05-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多