如何在Android Studio中动态创建的多个按钮上执行onclick操作

时间:2017-06-30 07:26:11

标签: java android

我是Android新手,我想为自己创建一个锻炼应用程序,为此我的想法是 -

1)主要活动将显示一个添加按钮以添加练习数。让我们假设我需要5个练习,这样就可以动态创建5个按钮。

2)现在按钮创建了我需要的是当我点击任何按钮时调用相应的textToSpeech,因为这个textToSpeech类将说出要启动的练习的名称。由于每个按钮都与不同的锻炼名称和时间相关联。

活动图片 - Main ActivityAdd number of Buttons

我不知道怎么做,因为有很多按钮以及如何为每个按钮调用不同的textToSpeech。

5 个答案:

答案 0 :(得分:1)

只需在您的活动中添加onCLickListener

即可
View.OnClickListener onClickListener=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // put condition as per id of view
            }
        };

//在此处创建动态添加点击列表器

Button button=new Button(ButtonActivity.this);
        button.setText("Button"+i);
        button.setId(1000+i);
        button.setOnCLickListener(onClickListener);

我希望我能给你解决方案。

答案 1 :(得分:0)

在活动

上实施 OnClickListener()
@Override
public void onClick(View v) {

    switch (v.getId()) {

        case R.id.oneButton:
            // do your code
            break;

        case R.id.twoButton:
            // do your code
            break;

        case R.id.threeButton:
            // do your code
            break;

        default:
            break;
    }

}

我希望这对你有所帮助,一切顺利。

答案 2 :(得分:0)

如果我以正确的方式理解您的问题,您需要在创建按钮时将ID分配给按钮 启动五个按钮循环

for(i=1;i<=5;i++){
   Button button=new Button(Activity.this);
   button.setId(R.id.existingButtonId+i);
   button.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
   button.offsetTopAndBottom(40);
   button.setHint("hint x ");
   yourLayout.addView(button);
 }

在您的活动上实现onClickListener并使用

之后
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.ex1:
             //call textToSpeech for exercise one
            break;
        case R.id.ex2:
            //call textToSpeech for exercise two
            break;
        default:
            break;
    }
}

答案 3 :(得分:0)

在充气新按钮/视图时添加clicklistener。

    private void addNewExcercise(String exercise) {

    Button button = new Button(ActivityMain.this);
    button.setText(exercise);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // do ur task here
        }
    });

    parentLinearLayout.addView(button);
}

答案 4 :(得分:0)

SecondActivity(按钮显示)无需创建活动创建Java文件并在清单中添加文件

GridLayout gridLayout=new GridLayout(this);
    ViewGroup.LayoutParams layoutParams=new ViewGroup.LayoutParams(GridLayout.LayoutParams.MATCH_PARENT,GridLayout.LayoutParams.WRAP_CONTENT);
    gridLayout.setLayoutParams(layoutParams);
    gridLayout.setColumnCount(2);
    setContentView(gridLayout);
    if(getIntent()!=null){
        int buttoncount=getIntent().getIntExtra("value",0);
        for(int i=0;i<buttoncount;i++){
           Button button=new Button(ButtonActivity.this);
            button.setText("Button"+i);
            button.setId(1000+i);
            button.setBackgroundResource(R.drawable.button_back);
            button.setPadding(10,10,10,10);
            gridLayout.addView(button);
        }
    }

背景的Xml文件(在drawable中创建此文件)

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#66ff0000" />
<size
    android:width="120dp"
    android:height="120dp"/>
</shape>

任何混淆然后使用它是Java文件的完整代码

public class ButtonActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GridLayout gridLayout=new GridLayout(this);
    ViewGroup.LayoutParams layoutParams=new ViewGroup.LayoutParams(GridLayout.LayoutParams.MATCH_PARENT,GridLayout.LayoutParams.WRAP_CONTENT);
    gridLayout.setLayoutParams(layoutParams);
    gridLayout.setColumnCount(2);
    setContentView(gridLayout);
    if(getIntent()!=null){
        int buttoncount=getIntent().getIntExtra("value",0);
        for(int i=0;i<buttoncount;i++){
           Button button=new Button(ButtonActivity.this);
            button.setText("Button"+i);
            button.setId(1000+i);
            button.setBackgroundResource(R.drawable.button_back);
            button.setPadding(10,10,10,10);
            gridLayout.addView(button);
        }
    }

}
}

清单文件

<activity android:name=".ButtonActivity"></activity>

并使用上面的背景文件......