当我从另一个Activity调用方法时出现Null Point异常

时间:2016-02-16 06:41:25

标签: nullpointerexception

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()'在空对象引用上

我不知道出了什么问题。

我多次面对这个问题,但我从未明白这个问题。

3 个答案:

答案 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();