如何将点击侦听器设置为 属性 of activity?
How to make on click listener as property of activity?
我正在尝试将我的点击事件作为 activity 的属性。我不确定这是否是最好的方法,但作为 Android 的新手,我借用了我从 C# 或 JavaScript 中了解到的知识。这是我正在尝试做的事情:
public class MainActivity extends Activity {
TextView topTextView;
Button counterButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init view elements
topTextView = (TextView) findViewById(R.id.textView1);
counterButton = (Button)findViewById(R.id.button1);
// Init element events
counterButton.setOnClickListener(onCounterButtonClick);
}
private OnClickListener onCounterButtonClick(final MainActivity activity) {
return new OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(activity,
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
topTextView.setText("Updated from button");
}
};
}
}
有更好的方法吗?
您可以将侦听器声明为 class 的字段。
private OnClickListener onCounterButtonClick = new OnClickListener(){
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(MainActivity.this, "Button was clicked", Toast.LENGTH_LONG);
toast.show();
}
};
}
并将其作为参数。
您可以使用 View.OnClickListener()
匿名内部 class。
counterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(activity,
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
}
});
确切地说,我现在不知道是否是您想要的。但是 Android 有其他方法来定义 Button 中的操作,例如:
在您的 activity.xml
中定义按钮 属性 onClick=myFunction
然后在您的 Activity.java
中编写这样的方法:
activity.xml
....
<Button
android:id="@+id/Button_1"
android:onClick="myFunction"
android:text="@string/Button_1" />
....
Activity.java
public void myFunction(View v) {
Toast toast = Toast.makeText(this, "Button was clicked", Toast.LENGTH_LONG).show();
}
祝你好运!
你也可以用这个,
public class MainActivity extends Activity implements OnClickListener{
TextView topTextView;
Button counterButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init view elements
topTextView = (TextView) findViewById(R.id.textView1);
counterButton = (Button)findViewById(R.id.button1);
// Init element events
counterButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view.getId == R.id.button1){
Toast toast = Toast.makeText(activity,
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
topTextView.setText("Updated from button");
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init view elements
topTextView = (TextView) findViewById(R.id.textView1);
counterButton = (Button) findViewById(R.id.button1);
// Init element events
counterButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Toast toast = Toast.makeText(getApplicationContext(),
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
topTextView.setText("Updated from button");
}
});
}
你也可以直接设置onClickListener
,而不是传递参数activity,你可以使用getApplicationContext()
函数来获取上下文。
我正在尝试将我的点击事件作为 activity 的属性。我不确定这是否是最好的方法,但作为 Android 的新手,我借用了我从 C# 或 JavaScript 中了解到的知识。这是我正在尝试做的事情:
public class MainActivity extends Activity {
TextView topTextView;
Button counterButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init view elements
topTextView = (TextView) findViewById(R.id.textView1);
counterButton = (Button)findViewById(R.id.button1);
// Init element events
counterButton.setOnClickListener(onCounterButtonClick);
}
private OnClickListener onCounterButtonClick(final MainActivity activity) {
return new OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(activity,
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
topTextView.setText("Updated from button");
}
};
}
}
有更好的方法吗?
您可以将侦听器声明为 class 的字段。
private OnClickListener onCounterButtonClick = new OnClickListener(){
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(MainActivity.this, "Button was clicked", Toast.LENGTH_LONG);
toast.show();
}
};
}
并将其作为参数。
您可以使用 View.OnClickListener()
匿名内部 class。
counterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(activity,
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
}
});
确切地说,我现在不知道是否是您想要的。但是 Android 有其他方法来定义 Button 中的操作,例如:
在您的 activity.xml
中定义按钮 属性 onClick=myFunction
然后在您的 Activity.java
中编写这样的方法:
activity.xml
....
<Button
android:id="@+id/Button_1"
android:onClick="myFunction"
android:text="@string/Button_1" />
....
Activity.java
public void myFunction(View v) {
Toast toast = Toast.makeText(this, "Button was clicked", Toast.LENGTH_LONG).show();
}
祝你好运!
你也可以用这个,
public class MainActivity extends Activity implements OnClickListener{
TextView topTextView;
Button counterButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init view elements
topTextView = (TextView) findViewById(R.id.textView1);
counterButton = (Button)findViewById(R.id.button1);
// Init element events
counterButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view.getId == R.id.button1){
Toast toast = Toast.makeText(activity,
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
topTextView.setText("Updated from button");
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init view elements
topTextView = (TextView) findViewById(R.id.textView1);
counterButton = (Button) findViewById(R.id.button1);
// Init element events
counterButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Toast toast = Toast.makeText(getApplicationContext(),
"Button was clicked", Toast.LENGTH_LONG);
toast.show();
topTextView.setText("Updated from button");
}
});
}
你也可以直接设置onClickListener
,而不是传递参数activity,你可以使用getApplicationContext()
函数来获取上下文。