我找到了一些例子,但它并没有帮助我。我正在为我的手机创建一个应用程序,但我遇到了一个问题。问题是我想在我的新课程中启动一个新的Activity但它不起作用。
下面这个课是我想要开始名为“PhoneStatus”
的新活动的地方package com.example.phone;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class Controller {
Button ps;
PhoneStatus c_ps;
public Controller(Button ps) {
this.ps = ps;
c_ps = new PhoneStatus();
createPhone_status();
}
private Boolean createPhone_status() {
ps.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent it = new Intent("com.example.phone.PhoneStatus");
c_ps.startActivity(it);
}
});
return true;
}
}
有人可以帮我开一个新的活动吗?因为这给了我一个错误并且崩溃了应用程序。 Activity1(因此MainActivity)工作正常。
错误: 07-22 15:38:35.946:E / AndroidRuntime(30784):java.lang.NullPointerException:尝试调用虚拟方法'android.app.ActivityThread $ ApplicationThread android.app.ActivityThread.getApplicationThread()'on a空对象引用
答案 0 :(得分:1)
PhoneStatus是一项活动。您应该从不自己实例化Android应用程序组件(如活动)。操作系统的责任是执行此操作,因为操作系统需要执行一些额外的设置,例如将基本上下文附加到活动。因为您使用new PhoneStatus()
自己实例化了此设置,所以此设置尚未发生,并且对startActivity()
的调用导致在调用堆栈中的某处发生错误。您应该尝试使用活动的最早版本是onCreate()
回调。
我认为最简单的解决方案是:
ps.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent it = new Intent("com.example.phone.PhoneStatus");
ps.getContext().startActivity(it);
}
});
答案 1 :(得分:1)
一般来说,请使用:
Intent intent = new Intent(this, newActivityName.class);
startActivity(intent);
答案 2 :(得分:1)
你的'Controller'是简单的java类,所以你不会找到任何启动actvity的上下文。因此,您需要在“Controller”构造函数中将上下文作为参数传递。
public Controller(Button ps, Context context) {
this.ps = ps;
c_ps = new PhoneStatus();
createPhone_status();
this.context = context;
}
将该上下文存储在该类中并使用该上下文启动活动。
Intent intent = new Intent(context, newActivityName.class);
context.startActivity(intent);
如果PhoneStatus是一个活动,那么@Karakuri是对的,你可以遵循这个建议
快乐的编码......
答案 3 :(得分:0)
您可以使用以下代码
Intent intent = new Intent(LoginActivity.this, AboutActivity.class);
startActivity(intent);
LoginActivity - 当前活动名称 AboutActivity - 下一个活动需要去(Phonestatus)
答案 4 :(得分:0)
您在Activity
之外呼叫Activity
,因此您需要:
Intent it = new Intent("com.example.phone.PhoneStatus");
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //You should start a new task
ps.getContext().startActivity(it);