[英]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.