Sutck关于重构Android代码的代码挑战。
将两个onClick()方法中的代码重构为一个名为trackButtonPress()的常用方法。使其成为MainActivity.java的公共方法。
public class MainActivity extends Activity {
public static final String TAG = MainActivity.class.getSimpleName();
public Button mButton1;
public Button mButton2;
/*
* Some code has been omitted for brevity
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton1 = (Button)findViewById(R.id.button1);
mButton2 = (Button)findViewById(R.id.button2);
trackButtonPress();
}
mButton1.setOnClickListener(new View.OnClickListener() {
trackButtonPress();
}
}
mButton2.setOnClickListener(new View.OnClickListener() {
trackButtonPress();
}
}
public void trackButtonPress() {
public void onClick(View view) {
Toast.makeText(MainActivity.this, "A button was pressed", Toast.LENGTH_LONG).show();
Log.i(TAG, "A button was pressed");
}
}
请帮助!!!
答案 0 :(得分:0)
在每个OnClickListener
中,您需要覆盖onClick
,这需要View
作为参数。
在方法trackButtonPress
中,您还应传递View
参数。
public void trackButtonPress(View v) {
// see below
}
然后,如果存储对视图的引用,则可以测试单击了哪个视图。
if (v == view1) {
// do stuff
} else if (v == view2) {
// do other stuff
} // etc..
这将提供预期的功能。