2010-03-04 74 views
1

我想要使用異步事件例如爲文本輸入到一個texbox中。按下按鈕。它編譯沒有錯誤,但按下按鈕時沒有任何反應。從我在論壇上收集的信息來看,我的背景是錯誤的。有人能幫我嗎?以下是代碼:getApplicationContext()不適用於異步事件

mSendButton = (Button)findViewById(R.id.button_send); 
mSendButton.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     TextView view = (TextView)findViewById(R.id.edit_text_out); 
     String message = view.getText().toString(); 
     if (message == "bla") { 
      Toast.makeText(getApplicationContext(), "Bla was entered", Toast.LENGTH_LONG).show(); 
     } 
     else { 
      Toast.makeText(getApplicationContext(), "Bye ", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

回答

0

確定您沒有堆棧跟蹤?

你的代碼似乎是對的,至少如果它在一個Activity中。

建議:

  • 與getBaseContext(試行),而不是getApplicationContext()
  • 找堆棧跟蹤
  • 與Toast.makeText嘗試(MyActivityClass.this, 「再見」,Toast.LENGTH_SHORT) 。顯示();
+0

或者,更好的,只是使用'Activity'爲'Context',而不是試圖'getBaseContext()'(不推薦)或'getApplicationContext()'(*真*不推薦)。 – CommonsWare 2010-03-04 12:19:53

+0

謝謝,dystroy。我在代碼中發現了更高的錯誤。該函數的調用已被屏蔽。所以它從來沒有達到「如果」的聲明。 – Juan 2010-03-05 14:23:48

2

試試這個:

mSendButton = (Button)findViewById(R.id.button_send); 
mSendButton.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     TextView view = (TextView)findViewById(R.id.edit_text_out); 
     String message = view.getText().toString(); 
     if (message == "bla") { 
      Toast.makeText(getActivity(), "Bla was entered", Toast.LENGTH_LONG).show(); 
     } 
     else { 
      Toast.makeText(getActivity(), "Bye ", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

或:

mSendButton = (Button)findViewById(R.id.button_send); 
mSendButton.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     TextView view = (TextView)findViewById(R.id.edit_text_out); 
     String message = view.getText().toString(); 
     if (message == "bla") { 
      Toast.makeText(getContext(), "Bla was entered", Toast.LENGTH_LONG).show(); 
     } 
     else { 
      Toast.makeText(getContext(), "Bye ", Toast.LENGTH_SHORT).show(); 
     } 
    } 
});