总是在我的应用中,我在void onCreate
添加了按钮,但现在我尝试使用更多按钮(大约10个)进行应用。我想在启动应用程序上激活所有按钮。
在我看来,在这个onCreate中添加的按钮太多了,应用程序将开始变长
我试着说:
myButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
myMethod();
}
})
onCreate
但AndroidStudio强调setOnClickListener
和view
我没有想法,如何以及在哪里可以添加onCreate按钮。
答案 0 :(得分:2)
如果你不想过度使用你的oncreate方法,那么在活动的任何地方创建一个clicklistener,然后在onCreate中设置它。
onCreate:
edit_a_member = (Button) findViewById(R.id.edit_member);
delete_a_member = (Button) findViewById(R.id.delete_member);
edit_a_member.setOnClickListener(handleClick);
delete_a_member.setOnClickListener(handleClick);
clickListener:
private View.OnClickListener handleClick = new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.edit_member:
member_selected = EDIT_MEMBER_SELECTED;
callDialog();
break;
case R.id.delete_member:
callDeleteAlert();
break;
}
}
};
答案 1 :(得分:1)
您可以在同一个类中为按钮添加单独的方法,例如:
public void onCreate(...){
//Standard setup of views or whatever you want to do here
this.addButtons();
}
private void addButtons(){
Button b1 = new Button("Hi");
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
myMethod();
}
});
Button b2 = new Button("Hi to you too");
b2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
myMethod();
}
});
}
这是一个例子。你可以用很多方式做到这一点。我觉得你应该彻底学习Java的基本Object Oriented
编程,因为这真的是你的问题表明你不理解的。按照youtube教程进行操作。我总是喜欢在youtube上的#But New Boston" Java教程系列。
PS:你可以在智慧的话语下制作这样美丽的代码':不要重复自己
答案 2 :(得分:1)
如果您必须在onCreate中做很多工作,但是您担心UI加载时间太长,您可以将延迟的runnable发布到处理程序,因此在onCreate方法中放置:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//add your code here
}
},10);
这将是你的UI将加载然后你的Runnable中的代码将在你的UI加载后10毫秒执行因此你的应用程序将不会花费太长时间来加载UI,即使在你的情况下我怀疑它将是必要的。
答案 3 :(得分:1)
如果要声明xml文件中的按钮:
在Xml中的每个按钮声明中添加这些属性:
android:clickable="true"
android:onClick="onClick"
现在在Activity Class中创建一个这样的方法:
public void onClick(View v){
switch(v.getId){
case R.id.{buttons_id_in_xml}
(Your Code)
break;
(Like for others)
}
}
如果您想动态添加按钮:
创建一个添加按钮的方法:
void addButton(String buttonName, int button id){
Button button = new Button(this);
button.setText("Push Me");
(add it to parent Layout of xml)
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch(id){
case id1:
(handle )
break;
(like for others)
}
}
});
}
答案 4 :(得分:0)
最好的方法是:
将implements View.OnClickListener
添加到
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
// declare variables
private Button mBtn1;
private Button mBtn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
// make an instance to the btns
mBtn1 = findViewById(R.id.btn1);
mBtn2 = findViewById(R.id.btn2);
// set onClickListener
mBtn1.setOnClickListener(this); // with "this" you are passing the view
mBtn2.setOnClickListener(this);
}
// implement onClick
@Override
public void onClick(View view) {
// check which btn was clicked by id
switch (view.getId()) {
case R.id.btn1:
btn1Clicked();
break;
case R.id.btn2:
btn2Clicked();
break;
}
}
private void btn1Clicked() {
// your code btn1 clicked
}
private void btn2Clicked() {
// your code btn2 clicked
}
希望这有帮助。干杯!