2012-05-20 2 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; 
} 
} 

Затмение дает мне в class1 "RingSettings не разрешен к типу" => в GetSettings test1 = новые RingSettings() ;

Что я делаю неправильно ?!

+1

Если у вас нет класса где-то под названием 'RingSettings' прямо сейчас, вы пытаетесь создать экземпляр метода' RingSettings' из класса 'GetSettings', который, очевидно, завершится ошибкой. Я рекомендую вам немного узнать о Java (и Android). Также, возможно, вы хотели сделать «GetSettings test1 = new GetSettings();' – Luksprog

ответ

2

У вас определенно есть несколько вещей, чтобы исправить здесь.

  • RingSettings, как определено в GetSettings, возвращает тип 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; 
    } 
} 

В классе А установите значение как GlobalVars.setValue("something");

В классе B получите значение String your_value = GlobalVars.getValue();

+0

К сожалению, это не делает ничего, чтобы решить ошибки в этом коде. Это лишь добавляет еще один уровень сложности. – cstrutton

+0

Этот ответ отлично работал для меня, когда в сочетании с другими ответами и комментариями относительно манифеста. – brandall

Смежные вопросы