使用Intents将数据从.java类发送到Main活动

时间:2013-11-21 14:32:07

标签: android android-intent

我是我的应用程序,我需要将变量(经度)的数据发送到主活动,但是在尝试打印值时我得到一个空值。这是一段代码。

try
        {
            ExifInterface exif = new ExifInterface(sd.toString()); 

            _longitude=getExifTag(exif,ExifInterface.TAG_GPS_LONGITUDE);

            exif.saveAttributes();

            Intent intent1 = new Intent(getApplicationContext(),MainActivity.class);
            intent1.putExtra("ParkingInfo._longitude", _longitude);

        }catch(IOException e)
        {
            e.printStackTrace();
        }
and here is the method declaration for getApplicationContext()


private Context getApplicationContext() {
    // TODO Auto-generated method stub
    return null;
}

是因为getApplicationContext()返回一个空值我得到一个空值,如果是这样我应该用它替换什么,以便我可以在MainActivity中获取我的值

5 个答案:

答案 0 :(得分:0)

getApplicationContext()更改为this并删除getApplicationContext()

的实施方式

答案 1 :(得分:0)

如果是Plain .java类,则创建一个方法

public double returnData()
{
      ExifInterface exif = new ExifInterface(sd.toString()); 
      _longitude=getExifTag(exif,ExifInterface.TAG_GPS_LONGITUDE);
      exif.saveAttributes();

    return _longitude;// assuming _longitude is double
}

在MainActivity中

 MyJavaClassName my = new MyJavaClassName();
 double value = my.returnData();

答案 2 :(得分:0)

要回答的最佳方法是添加问题的logcat(如果使用Eclipse)。

getApplicationContext()返回null,因为您创建了该方法并使其返回null。首先获取意图所在活动的上下文。它应该是:

Intent intent = new Intent(this,MainActivity.class);
intent.putExtra("ParkingInfo._longitude", _longitude);

然后你应该开始意图:

startActivity(intent);

了解更多信息:Android developer

答案 3 :(得分:0)

删除你的getApplicationContext()实现。您需要在设置intent后调用startActivity(intent1)方法。

try
        {
            ExifInterface exif = new ExifInterface(sd.toString()); 

            _longitude=getExifTag(exif,ExifInterface.TAG_GPS_LONGITUDE);

            exif.saveAttributes();

            Intent intent1 = new Intent(getApplicationContext(),MainActivity.class);
            intent1.putExtra("ParkingInfo._longitude", _longitude);

            mContext.startActivity(intent1);

        }catch(IOException e)
        {
            e.printStackTrace();
        }

修改

将Activity对象传递给此java类的构造函数。在此有一个Context类型的成员变量。设置this.mContext=context,然后从try-catch块中调用mContext.startActivity(intent1)。例如:

class YourJavaClass{

Context mContext;

public YourJavaClass(Context context)
{
this.mContext=context;
}

}

假设您在Activity中实例化此类,然后像这样实例化您的java类:

YourJavaClass object1 = new YourJavaClass(this);

答案 4 :(得分:0)

你可以:

  1. 扩展Application类(请参阅:http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/
  2. 创建一个这样的方法:

       public void startMainActivity(String _longitude){
    
      Intent intent1 = new Intent(getApplicationContext(),MainActivity.class);
    
      intent1.putExtra("ParkingInfo._longitude", _longitude); 
    
      startActivity(intent1);
    
    }
    
  3. 从java类中调用startMainActivity(longitude)