Android Eclipse - 按钮只能一个接一个地打开
Posted
技术标签:
【中文标题】Android Eclipse - 按钮只能一个接一个地打开【英文标题】:Android Eclipse - Buttons only open one after the other 【发布时间】:2015-05-06 15:38:24 【问题描述】:我遇到了一个我无法解决的奇怪问题。
我正在自学 android Eclipse,并创建了一个外观非常简单的应用,其中包含三个按钮:1)Facebook 2)LinkedIn 和 3)Favorite Band。但是,当我在手机上打开应用程序时,我只能按 1) --> 2) --> 3) 的顺序按下按钮。例如,我无法打开 2) 除非我已经打开了 1) 并且我无法打开 3) 除非我已经打开了 2) 等等。如何更改它以便我可以先打开 3)例子?
我已经在下面发布了我的 java 脚本,任何想法都会很棒!
package tabletop.app4asli;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity
MediaPlayer thesong;
Button main;
Button main2;
Button main3;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
main = (Button) findViewById(R.id.btn_go);
main.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String url = "https://www.facebook.com/asli.akidil?fref=ts";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
main2 = (Button) findViewById(R.id.button2);
main2.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String url = "https://www.linkedin.com/pub/asli-akidil/8a/719/55a.";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
main3 = (Button) findViewById(R.id.button3);
main3.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String url = "http://www.biffyclyro.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
【问题讨论】:
【参考方案1】:这是因为按钮2的布局代码包含在按钮1的onClick事件中,而按钮3的布局包含在按钮2的onClicked事件中。
onCreated() 函数的代码应该如下所示:
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
main = (Button) findViewById(R.id.btn_go);
main.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String url = "https://www.facebook.com/asli.akidil?fref=ts";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
);
main2 = (Button) findViewById(R.id.button2);
main2.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String url = "https://www.linkedin.com/pub/asliakidil/8a/719/55a.";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
);
main3 = (Button) findViewById(R.id.button3);
main3.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String url = "http://www.biffyclyro.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
);
【讨论】:
【参考方案2】:您在按钮 2 的 ClickListener 中为按钮 3 设置 ClickListener,在按钮 1 的 ClickListener 中为按钮 2 设置 ClickListener。因此,在分别单击按钮 1 和 2 之前,按钮 2 和 3 不会初始化。您可以在 for
循环中将 OnClickListener
设置为所有 Buttons
,如下所示:
ArrayList<Button> buttonList = new ArrayList<Button>();
buttonList.add((Button) findViewById(R.id.button1));
buttonList.add((Button) findViewById(R.id.button2));
buttonList.add((Button) findViewById(R.id.button3));
ArrayList<String> urlList = new ArrayList<String>();
urlList.add("https://www.facebook.com/asli.akidil?fref=ts");
urlList.add("https://www.linkedin.com/pub/asli-akidil/8a/719/55a.");
urlList.add("http://www.biffyclyro.com");
for (int i = 0; i < buttonList.size(); i++)
final int index = i;
final Button button = buttonList.get(index);
final String url = urlList.get(index);
button.setOnClickListener(new OnClickListener()
@Override
public void onClick(View arg0)
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
);
【讨论】:
感谢 IndexOutOfBounds,您教会了我一种制作按钮的新方法,而且效果很好!干得好!以上是关于Android Eclipse - 按钮只能一个接一个地打开的主要内容,如果未能解决你的问题,请参考以下文章
Android Eclipse - 单击时创建另一个按钮的按钮
使用 Eclipse 的 Android 应用程序 - 创建按钮数组