Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android按钮添加功能_Java_Android_Xml - Fatal编程技术网

Java Android按钮添加功能

Java Android按钮添加功能,java,android,xml,Java,Android,Xml,我已经用XML创建了一些按钮,并且有一个方法可以单击打开URL。如何将此方法链接到我的按钮,以便在点击/onClick时调用该方法 以下是方法代码: public void openResource() { Uri uri = Uri.parse("http://librarywales.org"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); }

我已经用XML创建了一些按钮,并且有一个方法可以单击打开URL。如何将此方法链接到我的按钮,以便在点击/onClick时调用该方法

以下是方法代码:

    public void openResource() {
     Uri uri = Uri.parse("http://librarywales.org");
     Intent intent = new Intent(Intent.ACTION_VIEW, uri);
     startActivity(intent);
}
我在onCreate方法中创建了一个XML按钮的实例:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button libButton = (Button) findViewById(R.id.button1);
}
如何将该方法添加到libButton实例

我现在已经在“VIN”的帮助下解决了上述问题,但当我在AVD上运行此应用程序并单击按钮时,会弹出一个android消息框,上面写着不幸的是,ApplicationName已停止工作。'

有人知道这是为什么吗

谢谢,
Dan

在按钮声明后添加此项

 libButton.setOnClickListener(new OnClickListener() 
    {           
        @Override
        public void onClick(View v) 
        {
            //open resource method call here...
        }
    });

在xml文件的按钮属性中

大概

<Button
      android:id="@+id/button1"
      .
      .
      android:onClick="openResource"
      />


请注意,此功能仅适用于Android 2.1(API级别7)及更高版本

,如果页面中有许多按钮,则可以使用button.setOnClickListener(此)

并在method use Switch语句中重写OnClick()方法,以匹配已选择的视图。这是一种优化且高效的方法

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button libButton = (Button) findViewById(R.id.button1);


libButton.setOnClickListener(new OnClickListener() 
{           
    @Override
    public void onClick(View v) 
    {
        if(v.getId()==R.id.button1){
           Uri uri = Uri.parse("http://librarywales.org");
           Intent intent = new Intent(Intent.ACTION_VIEW, uri);
           startActivity(intent);
        }
    }
});

}

我想这样做,只是不确定在主应用程序代码中编码是否更常见。感谢Android已经提供了一种很好的方法来处理视图的
onClick()
方法,它本身就是活动。感谢这一点,但是onClick(视图v)有一个错误,它不喜欢存在@Override。另外,当我在模拟器中运行它时,它说很遗憾,应用程序已经停止了/对此,默认语句是什么?顺便说一句,谢谢你,默认的只是休息;别忘了添加导入android.view.view.OnClickListener;emulator只响应我选择第一个按钮。这是因为代码行
Button libButton=(Button)findViewById(R.id.button1)
因为libButton被分配给id.button1作为第二个按钮或任何其他按钮,所以您必须像设置libButton.setOnClickListener一样设置侦听器(此);从findviewbyid()获取其ID后。然后您将能够捕获该按钮的onClick事件。如果你没有设置ClickListener,那么如果你点击那个特定的按钮,android不会感觉到。我已经更新了,是的,逻辑刚刚击中我。感谢您在安卓应用程序发布四天之后的耐心等待!
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button libButton = (Button) findViewById(R.id.button1);


libButton.setOnClickListener(new OnClickListener() 
{           
    @Override
    public void onClick(View v) 
    {
        if(v.getId()==R.id.button1){
           Uri uri = Uri.parse("http://librarywales.org");
           Intent intent = new Intent(Intent.ACTION_VIEW, uri);
           startActivity(intent);
        }
    }
});
public class YourActivity extends Activity  implements OnClickListener {
     public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

   Button libButton =(Button) findViewById(R.id.button1);
    libButton.setOnClickListener(this);

    Button OtherButton =(Button) findViewById(R.id.button2);
    OtherButton.setOnClickListener(this);


   }

 @Override
  public void onClick(View v) {

    switch (v.getId()) {
    case R.id.button1: openResource();
                           break;
    case R.id.button2: //do something for second button...

     default : break;
         }