MainActivity.java
public class MainActivity extends Activity {
static Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Class2 ji = new Class2();
ji.dothis();
}
});}}
Class2.java
public class Class2 extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void dothis() {
Toast.makeText(this,"It Doesn't Worked",Toast.LENGTH_LONG).show();
}
}
My Logcat每次都会生成NullPoint异常。
java.lang.NullPointerException:尝试调用虚方法' android.content.res.Resources android.content.Context.getResources()'在空对象引用上
我不知道出了什么问题。
我多次面对这个问题,但我从未明白这个问题。
答案 0 :(得分:0)
根据java语法没有错,您将始终能够通过其默认构造函数实例化一个类。如何调用Toast.makeText()也没有错。 它产生空指针异常的唯一原因是您手动实例化Activity继承的类。你永远不应该实例化并手动调用它,你必须通过一个intent来调用它,因此它将被绑定到android活动,因此初始化了上下文。 您从Toast.makeText()的第一个参数(它是上下文)找到它的空指针错误。
答案 1 :(得分:0)
您需要一些像这样的代码
MainActivity.java
Class2 ji = new Class2(MainActivity.this);
ji.dothis();
On Class2.java
public class Class2{
MainActivity activity;
public Class2(MainActivity activity)
{
this.activity=activity;
}
public void dothis() {
activity.Toast.makeText(activity,"It Doesn't Worked",Toast.LENGTH_LONG).show();
}
}
这是工作和测试的答案 ...
答案 2 :(得分:0)
请更新您的Class Class2,如下所示: -
public class Class2 {
Context CurrentContex=null;
public Class2(Context con)
{
CurrentContex=con;
}
public void dothis() {
Toast.makeText(CurrentContex, "It Doesn't Worked", Toast.LENGTH_LONG).show();
}
}
并将调用更新为如下所示: -
Class2 cs=new Class2(MainActivity.this);
cs.dothis();