2012-05-20 6 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'라고 불리는 클래스가 없으면 분명히 실패 할 클래스'GetSettings'에서 'RingSettings' 메소드를 인스턴스화하려고 시도하고 있습니다. 자바 (그리고 안드로이드)에 대해 좀 더 배우는 것이 좋습니다. 또한 아마도 당신은'GetSettings test1 = new GetSettings();'대답을 원했을 것입니다. – Luksprog

답변

2

여기서 해결해야 할 몇 가지 사항이 있습니다.

  • GetSettings에 정의 된 RingSettings는 GetSettings 개체가 아닌 void 형식을 반환합니다.
  • RingSettings는 컨텍스트를 인수로 사용하도록 정의됩니다. GetSettings의 방법은 객체와
  • 당신이 GetSettings 생성자

을 가져야한다 ... GetSettings 개체를 만들려고 가정 GetSettings.RingSettings (컨텍스트)를 호출 할 필요가로

  • RingSettings 정의된다 이것들은 시작하기위한 몇 가지 예일뿐입니다. 여기서 무례하게 말하는 것은 아니지만 자바의 기초를 더 잘 이해하기 위해서는 몇 가지 간단한 예제를 사용해야합니다. 즉, 위의 문제를 해결하고 코드를 다시 게시하면 누군가가 자신의 목표 달성에 더 가까워 야합니다. 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

    관련 문제