2013-11-21 40 views
0

我的應用程序,我需要發送一個變量(經度)的數據到主要活動,但是當我試圖打印值時,我得到一個空值。是一段代碼。使用Intents從.java類發送數據到主要活動

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

+0

其相當難以忽略和你的代碼 – MDMalik

+0

'getApplicationContext()'是好的,但不是這個,你可以使用'YOUACTIVITY。這',你可能會得到空,因爲變量'_longitude'可能爲空。 –

+0

代碼是否發佈在活動類中? – Raghunandan

回答

0

執行如果是一個普通的.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(); 
0

變化getApplicationContext()我的價值觀到this和刪除您的getApplicationContext()

0

需要回答的最好的辦法就是添加logcat的(如果你使用Eclipse)您的問題。

getApplicationContext()返回null,因爲您創建了方法並使其返回null。首先獲取意圖所在活動的背景。它應該是:

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

然後你就應該開始的意圖:

startActivity(intent); 

欲瞭解更多信息:Android developer

+0

不起作用,拋出這個msg 構造函數Intent(ParkingInfo,Class )未定義 –

+0

@ N.Nihar是的,它會因爲它不是一個Activity類而需要活動上下文 – Raghunandan

0

刪除您getApplicationContext()實現。設置意圖後,您需要調用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(); 
     } 

編輯:

傳遞一個活動對象到該Java類的構造函數。在這裏有一個類型爲Context的成員變量。設置this.mContext=context,然後從您的try-catch塊中調用mContext.startActivity(intent1)。例如:

class YourJavaClass{ 

Context mContext; 

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

} 

假設你正在實例化一個活動裏面這個類,然後實例化Java類是這樣的:

YourJavaClass object1 =新YourJavaClass(本);

+0

閱讀評論pls其java類不是一項活動。 – Raghunandan

相關問題