一次打开一个切换按钮
One Toggle Button on at a time
我正在开发一个 Android 应用程序。我动态创建了一些切换按钮,它们也可以点击...
我想要实现的是在任何特定按钮上切换并正常。
但是当我打开任何其他按钮时,所有其他切换按钮都应该关闭..
好像我可以一次打开任何一个按钮。如果按下前一个按钮的任何其他按钮应该关闭。
有动态的按钮数量..
我不知道如何实现。
这是我的代码:
for ( int i = 0; i<sez; i++ ){
final ToggleButton btn = new ToggleButton(xxxxx.this);
String g = contactList.get(i).toString();
Pattern p = Pattern.compile("\{([^}]*)\}");
Matcher m = p.matcher(g);
while (m.find()) {
String[] po=m.group(1).split("=");
btn.setId(i);
btn.setTextOn("play");
btn.setText(po[1]);
btn.setTextOff(po[1]);
final int id_ = btn.getId();
Rowlayout layout = (org.xxxx.xxx.ui.Rowlayout) findViewById(R.id.adios);
layout.addView(btn);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(InCallScreen.this,
list2.get(id_) + "", Toast.LENGTH_SHORT).show();
}
});
}
}
我已经花了 3 天时间,但仍然卡在里面,任何人都可以帮助我。将不胜感激....
这段代码非常适合我。但是,我删除了很多您的代码以简化答案。因此,相信您可以修改我设置的那些值,因为我不知道 sez 或 rowlayout 的值,我已将它们的值替换为 sez = 10 并将布局替换为线性布局。
不管怎样,这是代码。
public class MainActivity extends Activity
{
int sez;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sez = 10;
for ( int i = 0; i<sez; i++ ){
final ToggleButton btn = new ToggleButton(MainActivity.this);
btn.setId(i);
btn.setTextOn("play");
btn.setText("click");
btn.setTextOff("off");
final int id_ = btn.getId();
LinearLayout layout = (LinearLayout) findViewById(R.id.mainLinearLayout);
layout.addView(btn);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show();
int buttonId = btn.getId();
for(int ii = 0; ii<sez; ii++)
{
if(ii!=buttonId)
{
ToggleButton ButtonToOff = (ToggleButton)findViewById(ii);
ButtonToOff.setChecked(false);
}
}
}
});
}
}
}
您可能需要添加到代码中的部分主要在 onClick()
方法中。
希望对您有所帮助! :)
我正在开发一个 Android 应用程序。我动态创建了一些切换按钮,它们也可以点击...
我想要实现的是在任何特定按钮上切换并正常。 但是当我打开任何其他按钮时,所有其他切换按钮都应该关闭..
好像我可以一次打开任何一个按钮。如果按下前一个按钮的任何其他按钮应该关闭。
有动态的按钮数量..
我不知道如何实现。
这是我的代码:
for ( int i = 0; i<sez; i++ ){
final ToggleButton btn = new ToggleButton(xxxxx.this);
String g = contactList.get(i).toString();
Pattern p = Pattern.compile("\{([^}]*)\}");
Matcher m = p.matcher(g);
while (m.find()) {
String[] po=m.group(1).split("=");
btn.setId(i);
btn.setTextOn("play");
btn.setText(po[1]);
btn.setTextOff(po[1]);
final int id_ = btn.getId();
Rowlayout layout = (org.xxxx.xxx.ui.Rowlayout) findViewById(R.id.adios);
layout.addView(btn);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(InCallScreen.this,
list2.get(id_) + "", Toast.LENGTH_SHORT).show();
}
});
}
}
我已经花了 3 天时间,但仍然卡在里面,任何人都可以帮助我。将不胜感激....
这段代码非常适合我。但是,我删除了很多您的代码以简化答案。因此,相信您可以修改我设置的那些值,因为我不知道 sez 或 rowlayout 的值,我已将它们的值替换为 sez = 10 并将布局替换为线性布局。 不管怎样,这是代码。
public class MainActivity extends Activity
{
int sez;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sez = 10;
for ( int i = 0; i<sez; i++ ){
final ToggleButton btn = new ToggleButton(MainActivity.this);
btn.setId(i);
btn.setTextOn("play");
btn.setText("click");
btn.setTextOff("off");
final int id_ = btn.getId();
LinearLayout layout = (LinearLayout) findViewById(R.id.mainLinearLayout);
layout.addView(btn);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show();
int buttonId = btn.getId();
for(int ii = 0; ii<sez; ii++)
{
if(ii!=buttonId)
{
ToggleButton ButtonToOff = (ToggleButton)findViewById(ii);
ButtonToOff.setChecked(false);
}
}
}
});
}
}
}
您可能需要添加到代码中的部分主要在 onClick()
方法中。
希望对您有所帮助! :)