Android:将变量传递给非activity class
Android: Passing a variable to a non-activity class
我正在尝试将字符串从我的 MainActivity 传递到非 activity class(通知服务),以便我可以自定义通知消息。我试过使用 Intent,但是它不会工作,因为它是一个非 activity 基于 class。为什么这样做最好?
我目前正在尝试使用全局变量,但它不起作用。
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 时,这会使应用程序崩溃
您正在尝试将应用上下文投射到 Activity。它崩溃了,因为应用上下文不是 activity。您应该在服务中使用 handleIntent 或 binder 来传输数据。
http://developer.android.com/guide/components/bound-services.html#Basics
1.You可以尝试做成静态变量,在任何地方用Class引用调用。
public static String a = "Pumpkin";//Declare in MainActivity
Use it: String var = MainActivity.a;
2。将 Intent 作为 extras 传递,然后在接收到 intent 的地方获取 extras。
startActivity(new Intent(MainActivity.this, PropertyListviewActivity.class).putExtra("Key", "Value"));
收到:
if (intent != null)
if (intent.getExtras() != null)
if (intent.getExtras().getString("Key") != null) {
String recivedString= intent.getExtras().getString("Key");
3.Keep 在 Shared Preferences 中并在任何你想要的地方检索(不是好的做法)。
4.If 不是 Android 组件 class 尝试通过承包商。
您可以通过将数据保存到应用程序级变量或将其保存在 sharedpreference 中来完成此任务。
在应用层保存数据
制作一个静态变量,如
public static DatatypeYouDesire(String/int) cachedData;
现在当你想存储数据时,只需用你想存储的数据初始化这个变量
喜欢
YourApplictionClass.cachedData = "your data to be stored";
同样,您可以通过访问 YourApplicationClass.cacheData
来使用此数据
尝试事件总线Green Robot or Otto Event Bus两者都是很好的选择。
我正在尝试将字符串从我的 MainActivity 传递到非 activity class(通知服务),以便我可以自定义通知消息。我试过使用 Intent,但是它不会工作,因为它是一个非 activity 基于 class。为什么这样做最好?
我目前正在尝试使用全局变量,但它不起作用。
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 时,这会使应用程序崩溃您正在尝试将应用上下文投射到 Activity。它崩溃了,因为应用上下文不是 activity。您应该在服务中使用 handleIntent 或 binder 来传输数据。 http://developer.android.com/guide/components/bound-services.html#Basics
1.You可以尝试做成静态变量,在任何地方用Class引用调用。
public static String a = "Pumpkin";//Declare in MainActivity
Use it: String var = MainActivity.a;
2。将 Intent 作为 extras 传递,然后在接收到 intent 的地方获取 extras。
startActivity(new Intent(MainActivity.this, PropertyListviewActivity.class).putExtra("Key", "Value"));
收到:
if (intent != null)
if (intent.getExtras() != null)
if (intent.getExtras().getString("Key") != null) {
String recivedString= intent.getExtras().getString("Key");
3.Keep 在 Shared Preferences 中并在任何你想要的地方检索(不是好的做法)。
4.If 不是 Android 组件 class 尝试通过承包商。
您可以通过将数据保存到应用程序级变量或将其保存在 sharedpreference 中来完成此任务。
在应用层保存数据 制作一个静态变量,如
public static DatatypeYouDesire(String/int) cachedData;
现在当你想存储数据时,只需用你想存储的数据初始化这个变量 喜欢
YourApplictionClass.cachedData = "your data to be stored";
同样,您可以通过访问 YourApplicationClass.cacheData
来使用此数据尝试事件总线Green Robot or Otto Event Bus两者都是很好的选择。