2012-05-20 74 views
-1

我相信我有一个简单的问题......但对于初学者来说,我再也看不到它了。如何从其他类中获取var

在一个类中,我想从另一个类中获取一些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 =新RingSettings() ;

我在做什么错了?

+1

除非你有一个地方叫做类'RingSettings'现在你试图实例化一个方法'RingSettings',从类'GetSettings'这显然会失败。我建议你更多地了解Java(以及Android)。也许你想做'GetSettings test1 = new GetSettings();' – Luksprog

回答

2

你肯定有一些事情要解决这里。

  • GetSettings中定义的RingSettings返回类型void不是GetSettings对象。
  • RingSettings被定义为将上下文作为参数。
  • RingSettings被定义为的getSettings的方法,对象,应GetSettings.RingSettings(上下文)被称为
  • 假设你想创建一个对象的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.

好运

+0

谢谢你的回答! – user1404924

1

最简单的办法是实现一个辅助类:

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();

+0

不幸的是,这并没有解决这段代码中的错误。它只增加了另一层复杂性。 – cstrutton

+0

这个答案完美适用于我,当与其他答案和意见清单条目相结合。 – brandall

相关问题