[英]Android - OnClickListener - Constructor Not Being Called
這是我的第一個問題。 通常我可以通過Gogle找到答案,通常無論如何都會使我陷入stackoverflow,但這最終使我走得足夠遠,無法提出自己的問題,可能很明顯以前沒有人問過它!
無論如何,這不是特別適合任何事情。 只是試圖掌握onlicklisteners
。 在這種情況下,尤其是內部類onclicklisteners
。
問題:為什么程序跳過了MathButtonClicked
的構造MathButtonClicked
? 我是一個CharSequence
,但是從未調用過構造函數(我通過logcat知道了)。
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button mathButton = (Button) findViewById(R.id.mathButton);
EditText et = (EditText) findViewById(R.id.inputText);
CharSequence inputText = et.getText().toString();
mathButton.setOnClickListener(new MathButtonClicked(inputText));
}
private class MathButtonClicked implements OnClickListener {
private CharSequence receivedText;
public MathButtonClicked(CharSequence inputText) {
this.receivedText=inputText;
Log.d("Constructor", " " + receivedText);
}
public void onClick(View v) {
Log.d("Onclick", " " + receivedText);
Intent intent = new Intent(Main.this, Math.class);
intent.putExtra("inputText", getText());
startActivity(intent);
}
public CharSequence getText(){
return receivedText;
}
}//end inner class
} //end main
如果參數匹配參數,不是總是調用構造函數嗎? @ _ @
另外,我要完成的工作是將EditText
視圖中的文本傳遞給新的Intent。
我可以通過在OnClick
創建EditText
對象來做到這一點,但是我想在main方法中創建它,然后將信息傳遞給OnClick
。
謝謝!
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button mathButton = (Button) findViewById(R.id.mathButton);
EditText et = (EditText) findViewById(R.id.inputText);
CharSequence inputText = et.getText().toString();
mathButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String receivedText=inputText;
Log.d("Onclick", " " + receivedText);
Intent intent = new Intent(getApplicationContext(), Math.class);
intent.putExtra("inputText", receivedText);
startActivity(intent);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.