簡體   English   中英

Android:將變量傳遞給非活動類

[英]Android: Passing a variable to a non-activity class

我試圖將我的MainActivity中的String傳遞給非活動類(A Notification Service)以便我可以自定義通知消息。 我嘗試過使用Intent,但它不起作用,因為它是一個非基於活動的類。 這樣做的最佳原因是什么?

我目前正在嘗試使用全局變量,但它不起作用。

MainActivity.java

private String var;
private String a = "Pumpkin";

public String getVar(){
    return var;
}
public void setVar(String a){
    var = a;
}

NotificationService.java

  MainActivity b = ((MainActivity)getApplicationContext());
  String var = b.getVar();

即使我在NotificationService.java中調用變量var,這也會使應用程序崩潰

1.您可以嘗試制作靜態變量,並在任何地方使用Class refenrence進行調用。

 public static  String a = "Pumpkin";//Declare in MainActivity
 Use it: String var = MainActivity.a;

2.將Intent作為額外內容傳遞,然后在意圖收到的地方獲得額外內容。

  startActivity(new Intent(MainActivity.this, PropertyListviewActivity.class).putExtra("Key", "Value"));

Recive:

 if (intent != null)
        if (intent.getExtras() != null)
            if (intent.getExtras().getString("Key") != null) {
                String recivedString= intent.getExtras().getString("Key");

3.保持共享首選項並在任何你想要的地方(不是好的練習)。

4.如果不是Android組件類,請嘗試傳遞Contractor。

嘗試活動巴士綠色機器人奧托活動巴士都是很好的選擇。

您正在嘗試將應用上下文轉換為活動。 它崩潰,導致應用程序上下文不是活動。 您應該在服務中使用handleIntent或binder來傳輸數據。 http://developer.android.com/guide/components/bound-services.html#Basics

您可以通過將數據保存到應用程序級變量或將其保存在共享首選項中來執行此任務。

要在應用程序級別保存數據,請創建一個靜態變量

public static DatatypeYouDesire(String/int) cachedData;

現在,當您想要存儲數據時,jst使用您想要存儲的數據初始化此變量

YourApplictionClass.cachedData = "your data to be stored";

類似地,您可以通過訪問YourApplicationClass.cacheData來使用此數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM