簡體   English   中英

如何對在Android Studio中動態創建的多個按鈕執行onclick操作

[英]How to perform onclick action on multiple buttons created dynamically in Android Studio

我是Android的新手,我想創建一個鍛煉應用程序供自己使用,而我的想法是-

1)主要活動將顯示一個添加按鈕以添加練習數。 假設我需要5個練習,因此將動態創建5個按鈕。

2)現在創建的按鈕是我需要的,當我單擊任何按鈕時,將調用相應的textToSpeech,因為此textToSpeech類將說出要開始的練習的名稱。 由於每個按鈕都具有不同的練習名稱和時間。

活動圖像 - 主要活動添加按鈕數量

我不知道如何執行此操作,因為有很多按鈕,以及如何為每個按鈕調用不同的textToSpeech。

只需在您的活動中添加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);

希望我給您解決方案。

在活動上實現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;
    }

}

希望對您有幫助。

如果我以正確的方式理解您的問題,則需要在為五個按鈕創建按鈕啟動循環時為按鈕分配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;
    }
}

在增加新按鈕/視圖的同時添加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);
}

SecondActivity(按鈕顯示)無需創建Activity創建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>

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM