我有一个名为car的类,它在LocationListerner class(default class)
内实现了GoodActivity Class
。所以Car class
有一个名为onLocationChanged()
的函数。在onLocationChanged()
函数内部,我调用了名为fun()
的函数,它是另一个名为Contact3的类的静态函数。在调用函数fun()
时,我得到了空指针执行错误。
fun()
函数称为posts()
方法,该方法位于另一个名为 SongsActivity 的类中。
GoodActivity Class
public class GoodActivity extends Activity {
Button button2;
good s;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_good);
}
public class car implements LocationListener{
public void onLocationChanged(Location location) {
try{
String name="vijay";
Contact3.fun(GoodActivity.this,name);
}catch(Exception e){
Toast.makeText(GoodActivity.this, e.toString()+"good", Toast.LENGTH_LONG).show();
}}}}
Contact3 Class
public class Contact3 {
public static void fun(Context context,String name) {
SongsActivity s=new SongsActivity();
s.posts(name);
}
}
SongsActivity Class
public class SongsActivity extends Activity {
public void posts(String name){
try {
Log.d("Tests", s);`
} catch (Exception e) {
Toast.makeText(SongsActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
}}}
调用函数fun()
时,我得到空指针执行错误。
请帮助。
答案 0 :(得分:1)
SongsActivity s = new SongsActivity();
导致问题的行,因为您尝试使用SongsActivity.this
上下文而不启动Activity。如果SongsActivity
是普通的java类,那么就不需要扩展Activity。您可以通过将上传从fun
传递到posts
来显示Toast。
这样做:
1。从SongsActivity
2. 在posts方法中再添加一个参数作为Context:
public void posts(String name,Context context){
try {
Toast.makeText(context, name, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
}
}
3。从fun
方法传递上下文:
SongsActivity s=new SongsActivity();
s.posts(name,context);