gpt4 book ai didi

android - 在Android中使用不同的按钮打开不同的网页

转载 作者:行者123 更新时间:2023-11-30 03:28:18 25 4
gpt4 key购买 nike

我在一个 Activity 中有很多按钮,单击它们我需要打开不同的网页,这些网页的 URL 存储在 ArrayList 集合中。我想使用一个循环,但我得到一个“无法引用在不同方法中定义的内部类中的非最终变量”。

public class MainActivity extends Activity {

public List<String> links = new ArrayList<String>();
public static final int NRBUTTONS = 7;
..........................
@Override
protected void onCreate(Bundle savedInstanceState) {
..........
..........
int id = R.id.button1 - 1;
for (int index=0; index<NRBUTTONS; index++) {

Button b = (Button) findViewById(++id);
String text = titles.get(index);
b.setText(text);

b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent browserIntent = new Intent (Intent.ACTION_VIEW,
Uri.parse(links.get(index)));
startActivity(browserIntent);
}
});
}
...........
}

另外,如果你能帮我解决一下

Button b = (Button) findViewById(R.id.button1);
Button b = (Button) findViewById(R.id.button2);
Button b = (Button) findViewById(R.id.button3);
Button b = (Button) findViewById(R.id.button4);

我怎么能在循环中写这个?

最佳答案

我做这种事情时经常使用的模式的简要概述:

private static final int[] buttonIds = {R.id.button1, R.id.button2, R.id.button3, R.id.button4 };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_layout);

for (int i=0; i<buttonIds.length; i++) {
Button b = (Button) findViewById( buttonIds[i] );
if( b != null ) {
// Assign onClickListener, etc.
} else {
// Log This; shouldn't happen
}
}

....
}

和一个通用onClick的例子:

@Override
public void onClick(View v) {
switch( v.getTag() ) {
case R.id.Button1:
/// Do something for Button1
break;
case R.id.Button2:
/// Do something for Button2
break;
case R.id.Button3:
/// Do something for Button3
break;
case R.id.Button4:
/// Do something for Button4
break;
default:
/// Log this; shouldn't happen
}
}

还有一个快速提示,可以让您省去一些麻烦:如果您按如下方式声明您的 Activity 类:

public class MainActivity extends Activity implements OnClickListener {

然后您的 onClick() 回调可以只是 Activity 类的一个方法。然后,这会将您的作业简化为:

b.setOnClickListener( this );

我个人更喜欢这个而不是为各种按钮创建单独的回调,因为它使一切都井井有条。其他程序员有不同的偏好,他们没有好坏之分,IMO。

关于android - 在Android中使用不同的按钮打开不同的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com