2012-01-25 2 views
0

나는 내가 다음과 같은 방법을 호출 서비스에서 내 주요 활동Toast in Service의 서비스에 대한 올바른 컨텍스트?</p> <pre><code>MAIN_ACTIVITY.showMessages(Consts.CONNECTION_FAILED); </code></pre> <p>을하지만 보여주는에는 토스트가 없습니다 :

public void showMessages(int MSGCODE) { 
    Log.d("MSG", "showmessage reached with code " + MSGCODE); 
    switch (MSGCODE) 
    { 
     case '0': 
     Toast.makeText(tabHost.getContext(), "Account verification failed. Please try to reenter your password.", Toast.LENGTH_LONG).show(); 
     break; 
     case '1': 
     Toast.makeText(tabHost.getContext(), "Networking Service started.", Toast.LENGTH_LONG).show(); 
     break; 
     case '2': 
     Toast.makeText(tabHost.getContext(), "Networking Service stopped.", Toast.LENGTH_LONG).show(); 
     break; 
     case '3': 
     Toast.makeText(tabHost.getContext(), "Connection to server failed.", Toast.LENGTH_LONG).show(); 
     break; 
    } 
} 

내에서 다음과 같은 방법을 얻었다. TabHost는 세 개의 다른 탭을 호스팅합니다. 나는 이미 그 생각이 틀림없이 잘못된 컨텍스트를 선택하지만, 나는 그 중 하나가 올바른 아이디어인지, 어떻게 얻을 수 있는지 전혀 알지 못한다.

private TabHost tabHost; 
private final String[] loginStrings = new String[2]; 

public static Boolean runOnce = true; 
public static ArrayList<String> messages; 
private Intent svc; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tabHost = getTabHost(); 
    Intent intent = new Intent().setClass(this, BuddylistActivity.class); 
    tabHost.addTab(tabHost.newTabSpec("tabBuddylist").setIndicator("Buddylist").setContent(intent)); 
    intent = new Intent().setClass(this, ChatsActivity.class); 
    tabHost.addTab(tabHost.newTabSpec("tabBuddylist").setIndicator("Chats").setContent(intent)); 
    intent = new Intent().setClass(this, SchedularActivity.class); 
    tabHost.addTab(tabHost.newTabSpec("tabBuddylist").setIndicator("Schedular").setContent(intent)); 
+2

getApplicationContext()를 사용하십시오. – silentnuke

답변

0

Toast.makeText(getApplicationContext(), "Connection to server failed.", Toast.LENGTH_LONG).show(); 
2

showMessages() 정적 만드는 시도하고 매개 변수로 상황을 전달해야합니다.

public static void showMessages(Context context, int MSGCODE) 

당신은 단순히 문맥으로 this를 전달할 수 있습니다

Toast.makeText(context, "Networking Service started.", Toast.LENGTH_LONG).show(); 

및 서비스에서이 메소드를 호출처럼 토스트 메시지를 표시 할 수 있습니다

MAIN_ACTIVITY.showMessages(this, Consts.CONNECTION_FAILED); 

당신의 토스트는 경우에도 표시됩니다 이런 식으로 활동 자체가 파괴되었습니다.

당신은 당신의 원본 (non-static 방법)을 유지하고

public void showMessages(int MSGCODE){ 
    showMessages(this, MSGCODE); //calls static method with current context 
} 
-1

나는 토스트 메시지를 만드는 방법이이처럼 구현할 수

Toast toast = Toast.makeText(contetx, Message, Duraction); 
toast.show(); //This being the part that is missing 

내가 완전히 잘못 될 수있다,하지만 난 항상을 사용 toast.show() 메소드를 실제로 표시하려면