我已经开始开发Android应用程序,不知怎的,我已经设法在活动上创建一个按钮和文本,并在按钮单击我将更改TextView上的文本。 现在的问题是Android按钮监听器代码太长了,我想最小化这段代码?请帮助有没有办法最小化代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button ArsalButton = (Button)findViewById(R.id.ArsalButton);
final TextView ArsalText = (TextView)findViewById(R.id.ArsalText);
ArsalButton.setOnClickListener(
new Button.OnClickListener(){
public void onClick(View v){
ArsalText.setText("You Done it!");
}
}
);
}
答案 0 :(得分:1)
在您拥有此单个按钮之前,无需最小化此代码。但是如果你的屏幕上有多个按钮,而你想为所有这些按钮设置点击监听器,那么这不是一个好方法。在这种情况下,您的代码应该是:
public class YourActivity extends Activity implements Button.OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button ArsalButton = (Button)findViewById(R.id.ArsalButton);
final TextView ArsalText = (TextView)findViewById(R.id.ArsalText);
ArsalButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// get view id and perform operation based on id.
}
}
答案 1 :(得分:1)
在您的情况下,AFAIK for clicklistner无论代码如何添加listner&处理点击是我们需要做的,在这种情况下不需要最小化 根据我在您的代码中的意见,只有在你没有使用Button Instance的情况下才能实现优化,因为setOnClickListner是view方法
您可以使用以下三种不同的方式使用,您可以使用最小化/优化的方式。
// if button or textview instance is not required any where outside than
// Button ArsalButton = (Button)findViewById(R.id.ArsalButton);
//final TextView ArsalText = (TextView)findViewById(R.id.ArsalText);
findViewById(R.id.ArsalButton).setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
((TextView) findViewById(R.id.ArsalText)).ArsalText.setText("You Done it!");
}
}
);
第二种方式就像实现onlclick listner接口&处理点击
public class YourActivity extends Activity implements Button.OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.ArsalButton).setOnClickListener(this);
// if button or textview instance is not required any where outside than
// Button ArsalButton = (Button)findViewById(R.id.ArsalButton);
//final TextView ArsalText = (TextView)findViewById(R.id.ArsalText);
findViewById(R.id.ArsalButton).setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
}
}
);
}
@Override
public void onClick(View v) {
((TextView) findViewById(R.id.ArsalText)).ArsalText.setText("You Done it!");
}
}
另一种方法就是在XML按钮中提供点击事件
public class YourActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onArsalButtonClick(View view) {
((TextView) findViewById(R.id.ArsalText)).ArsalText.setText("You Done it!");
}
}
<Button
android:id="@+id/ArsalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onArsalButtonClick"
android:text="ArsalButton" />
答案 2 :(得分:0)
您不需要将其最小化。但是,您可以选择它:
在xml中设置侦听器:
<Button
android:id="@+id/myButton"
...
android:onclick="myButtonClick"
/>
然后你需要在你的活动中声明myButtonClick方法。
public void myButtonClick(View view){
ArsalText.setText("You done it");
}
或者在您的活动中实现OnClickListener:
public class MyActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
...
ArsalButton.setOnClickListener(this);
}
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.myButton:
ArsalText.setText("You Done It");
break;
}
}
}