我是android初学者,我在继承的基础知识中尝试使用此代码从void函数类A获取消息并使其显示但我无法...向我显示此消息java.lang.nullpointerexeption。 ..这是A级和主要活动的鳕鱼......谢谢:
A.java:
public class A extends Activity {
public void showA(){
Toast.makeText(this, "Class A", Toast.LENGTH_SHORT).show();
}
}
MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button show_a=(Button)findViewById(R.id.Show_A);
show_a.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try{
A c=new A();
c.showA();
}
catch(Exception e){
Toast.makeText(getApplicationContext(), e+"", Toast.LENGTH_LONG).show();
}
}
});
}
答案 0 :(得分:2)
从活动传递上下文:
A c=new A(getApplicationContext());
c.showA();
更改班级A:
public class A {
Context c;
public A(Context c) {
this.c=c;
}
public void showA(){
Toast.makeText(c, "Class A", Toast.LENGTH_SHORT).show();
}
}
答案 1 :(得分:0)
尝试将A类更改为:
public class A{
public void showA(Context ctx){
Toast.makeText(ctx, "Class A", Toast.LENGTH_SHORT).show();
}
}
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button show_a=(Button)findViewById(R.id.Show_A);
show_a.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try{
A c=new A();
c.showA(MainActivity.this);
}
catch(Exception e){
Toast.makeText(getApplicationContext(), e+"", Toast.LENGTH_LONG).show();
}
}
});
} }
答案 2 :(得分:0)
您正在以错误的方式创建活动A.活动由Android管理,因此您不会创建活动,而是通知系统启动活动。您通知Android的方式是使用意图。
Intent myIntent = new Intent(this, A.class);
startActivity(myIntent);
然后你可以在A活动的 onResume 中显示Toast。
@Override
public void onResume(){
super.onResume();
showA();
}
或者你可以像@imperator_sp那样更改类A
答案 3 :(得分:0)
根据Java,你在这里做的很好但是当谈到android时,这不是一个好习惯。你在这里可以做的是,不要用Activity
扩展A类,只需用下面提到的方法替换方法showA()
:
public static void showA(Context context, String text){
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
并从您想要的任何地方调用此方法: -
showA(this, "Class A");