我来自iOS世界,刚开始使用Android。我接受了java培训,所以我知道如何创建一个方法,但我没有采取行动。
我想要做的是从按钮创建一个方法动作,我无法在任何地方找到如何做到这一点(显然在错误的地方寻找)。当我点击按钮1时,我想创建一个内部只有a = 1的方法,当我点击按钮2时,我想要一个= 2(然后我可以决定当a为1或2时该做什么)。
我在Acitivity_main.xml中创建了我的按钮,并在OnClick中提供了一个方法名称,但就我而言。
当我与iOS比较时似乎很基本,我不明白为什么我无法找到它。
请一位好心的人指出我正在制定行动的正确方向吗?
答案 0 :(得分:3)
您有三种选择:
常见于1,2)您需要为布局XML文件中的每个按钮分配一个ID
<Button android:id="@+id/my_button1"
..........
/>
<Button android:id="@+id/my_button2"
..........
/>
1)在onCreate()
之后的活动setContentView()
方法中,您需要为每个按钮设置一个新的OnClickListener
。
public class MyActivity extends Activity {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton1 = (Button) findViewById(R.id.my_button1);
Button myButton2 = (Button) findViewById(R.id.my_button2);
myButton1.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// Do what you want here
a = 1;
}
});
myButton2.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// Do what you want here
a = 2;
}
});
}
2)正如您在第一种方法中所看到的,我们需要为每个按钮从OnClickListener
创建一个新对象。我们可以将所有内容合并为一个OnClickListener
,以实现效果和可读性。
public class MyActivity extends Activity implements View.OnClickListener {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton1 = (Button) findViewById(R.id.my_button1);
myButton1.setOnClickListener(this);
Button myButton2 = (Button) findViewById(R.id.my_button2);
myButton2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_button_1:
a = 1;
break;
case R.id.my_button_2:
a = 2;
break;
}
}
...
}
3)您不需要为此选项分配ID,您只需要在XML中分配方法名称,然后在活动中使用完全相同的方法实现相同的方法name,但必须将View对象作为参数。
<Button
...
android:onClick="button1Click" />
<Button
...
android:onClick="button2Click" />
然后在你的活动中写下方法。
public class MyActivity extends Activity implements View.OnClickListener {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void button1Click(View v) {
a = 1;
}
public void button2Click(View v) {
a = 2;
}
}
这是您的所有选择。我个人更喜欢2号。
答案 1 :(得分:0)
您可以通过documentation:
选择两个按钮来处理按钮a)在你的java文件中声明并定义你的方法
int a = 0;
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
a = 1;
}
});
b)或在xml布局中定义方法:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/self_destruct"
android:onClick="selfDestruct" />
然后在你的java文件中:
int a = 0;
public void selfDestruct(View view) {
a = 1;
}
答案 2 :(得分:0)
首先在您的xml文件中指定按钮,如下所示: -
<Button android:id="@+id/button1"
..........
/>
<Button android:id="@+id/button2"
..........
/>
从xml中找到id后,如下所示在其上设置OnclickListener并且不要忘记在你的类上实现OnClickListener监听器,如公共类CLASSNAME extends Activity实现OnClickListener
button1 .setOnClickListener(CLASSNAME.this);
button2.setOnClickListener(CLASSNAME.this);
比实现onclickListener之后,它会为你提供像onclick这样的覆盖方法(View v)
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1 : //Here i assumes that button1 is the name of button in yours xml which you declare button1
// do something on button1 click
break;
case R.id.button2 :////Here i assumes that button2 is the name of button in yours xml which you declare button2
// do something on button2 click
break;
}
}
答案 3 :(得分:0)
在您的活动布局中创建两个按钮并指定一些ID 他们喜欢这个
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_gravity="center_horizontal|top" />
然后,在您的活动类文件中获取这些文件的regerence
按钮和设置onclick听众如下(写下所有内容
onCreate()
或onResume
方法)。在onClick方法中做任何事情
你想要的。
Button myButton1;
Button myButton2;
int a;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
myButton1 = (Button) findViewById(R.id.my_button1);
myButton1.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) { a =1;
}
myButton2 = (Button) findViewById(R.id.my_button1);
myButton2.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) { a =2;
}
答案 4 :(得分:0)
有两种方法可以对按钮单击执行操作
第一种方法是在Button代码中的布局(xml)文件中设置一个android:OnClick =“methodName”,并在java代码中使用该方法来访问该按钮
public void methodName(View v) {
// Do what you want to perform on Button click
}
在按钮后面执行某些操作的第二种方法是在java代码中访问该按钮并执行您想要执行的操作
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do what you want to perform on that button click
}
});