【问题标题】:how to get var from other classes如何从其他类中获取 var
【发布时间】:2012-05-20 07:45:41
【问题描述】:

我相信我有一个简单的问题....但是对于我作为初学者的我来说,我再也看不到它了。

在一个类中,我想从另一个类中获取一些 var。

第 1 课:

package com.blabla;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public class SMSReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    //get shared preferences

    GetSettings test1 = new RingSettings();
    String theSMStext = test1.getSMStext();
    Boolean theActivateSMS = test1.getActivateSMS();    
}
}

第 2 类:

package com.blabla;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public class GetSettings {

/**
 * @param args
 */
private String SMStext;
private Boolean ActivateSMS;


public static void RingSettings(Context context) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);

    String SMStext = sp.getString("SMStext", "0");
    Boolean ActivateSMS = sp.getBoolean("ActivateSMS", false);
}

public String getSMStext(){
    return SMStext;
}

public Boolean getActivateSMS(){
    return ActivateSMS;
}
}

Eclipse 在 Class1 中为我提供“RingSettings 无法解析为类型”=> 在 GetSettings test1 = new RingSettings();

我做错了什么?!

【问题讨论】:

  • 除非您现在有一个名为RingSettings 的类,否则您现在正尝试从类GetSettings 实例化一个方法RingSettings,这显然会失败。我建议您多了解一点 Java(以及 Android)。也可能你想做GetSettings test1 = new GetSettings();

标签: java android eclipse class


【解决方案1】:

您在这里肯定有一些问题需要解决。

  • 在 GetSettings 中定义的 RingSettings 返回类型 void 而不是 GetSettings 对象。
  • RingSettings 被定义为将上下文作为参数。
  • RingSettings 被定义为 GetSettings 对象的方法,应使用 GetSettings.RingSettings(context) 调用
  • 假设您正在尝试创建一个 GetSettings 对象... GetSettings 应该有一个构造函数

这些只是入门的一部分。我在这里并不是要粗鲁,但您应该使用一些更简单的示例来更好地学习 Java 的基础知识。话虽如此,如果您解决了上述问题并重新发布您的代码,那么有人应该能够让您更接近您想要完成的目标。

new 关键字上查看此信息:(帮助您入门)

The new operator instantiates a class by allocating memory for a new object and returning a reference to that memory. The new operator also invokes the object constructor.

祝你好运

【讨论】:

    【解决方案2】:

    最简单的解决方案是实现一个辅助类:

    public class GlobalVars extends Application {
    
        private static String value2;
    
    
        public static String getValue() {
            return value2;
        }
    
        public static void setValue(String value) {
            value2 = value;
        }
    }
    

    在A类中设置值为GlobalVars.setValue("something");

    在 B 类中获取值为String your_value = GlobalVars.getValue();

    【讨论】:

    • 不幸的是,这并不能解决此代码中的错误。它只会增加另一个层次的复杂性。
    • 当结合其他关于清单条目的答案和 cmets 时,这个答案对我来说非常有效。
    猜你喜欢
    • 2015-07-08
    • 2014-12-13
    • 1970-01-01
    • 2023-01-18
    • 2013-08-27
    • 2022-06-12
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多