从其他类Android调用函数时显示空指针异常

时间:2014-09-29 05:49:39

标签: android performance android-intent android-activity nullpointerexception

我有一个名为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()时,我得到空指针执行错误

请帮助。

1 个答案:

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