onClick Listener无法正常工作

时间:2014-03-13 21:07:44

标签: android

我有问题获取onClick的编码工作正常我有一个主要活动,包含8个按钮按钮1应该打开面对书页2,4,5,6和7应该打开一个Web浏览器到定义的页面和按钮8打开具有预设号码的电话拨号器进行呼叫。我不能让这个工作崩溃的应用程序我可以设置一个onclick监听器到按钮1并让它工作,但当我添加下一个它崩溃应用程序我没有错误在eclipse我被告知这样做一个处理onclicks的片段,但是如果能做到这一点我迷失了任何人都可以帮我这个编码???

这就是我到目前为止只有2个按钮仍然没有打开面子书或打开电话拨号器的那个但是这是我得到的然后它崩溃 - 杰里33分钟前

import android.net.Uri;
import android.os.Bundle; 
import android.app.Activity;
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity { 

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

    public void addButtonClickListner() { 
        Button btnNavigator = (Button)findViewById(R.id.imageButton2);                
        btnNavigator.setOnClickListener(new OnClickListener(){ 
             public void onClick(View arg) { 
                  Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("www.*****.com")); 
                  startActivity(intent); 
             } 
        }); 
    } 

2 个答案:

答案 0 :(得分:0)

改为

...

package com.example.testcode;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
// Test code: import android.widget.TextView;

// Let your class implement the OnClickListener interface directly. This
// will let you use the onClickListener
class MainActivity extends Activity implements OnClickListener{
    @Override 
    public void onCreate(Bundle savedInstanceState) {           
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 

        // "find" our views by their id's in our activity's layout
        Button button1 = (Button) findViewById(R.id.button1);
        Button button2 = (Button) findViewById(R.id.button2);
        //...... continue for button3 - button8

        // set our "click" listeners for each of our buttons
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        //...... continue for button3 - button 8
    } 

    // Because our class implements the OnClickListener interface
    // it will be listening for "clicks". Because of this, we can
    // override the click listener's default onClick(View v) method.
    // View v is our view, or our button, that is "clicked".
    @Override
    public void onClick(View v) {
        // Test code: TextView text = (TextView) findViewById(R.id.text);

        // This is the statement that will allow each of your buttons
        // to perform different processes. For my test code, I have each
        // button reset the TextView I have displayed in the top of my
        // layout.
        switch(v.getId()){  
        case R.id.button1:
            // Test code: text.setText("Button 1");
            break;
        case R.id.button2:
            // Test code: text.setText("Button 2");
            break;
        //...... continue for button3 - button 8
        default:
            Log.d(getApplication().getPackageName(), "Button click error!");
            break;
        }   
    }
} 

请看一下我的评论。被评为

的部分
// Test Code: 

代码对你正在做的事几乎没用。 switch语句中的测试代码是您需要用每个按钮替换的内容。同样重要的是要注意我说" // ......继续按钮3 - 按钮8"我只想重复我用前两个按钮开始的模式,其余六个按钮。

如果你想用我给定的测试代码测试它,这是我的布局(只需确保你擦除" //测试代码:"这样测试代码行不再被注释掉:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Press a button"
        android:id="@+id/text" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 1"
        android:id="@+id/button1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 2"
        android:id="@+id/button2" />

</LinearLayout>

注意:

重要的是要理解&#34; good&#34; xml布局,&#34; android:text =&#34;部分将被设置为&#39; android:text = @ string /&#34; string_id&#34;&#39;而不是一些通用字符串来帮助本地化。

确保将声明包的最顶行更改为您放置Activity的任何包。此包的名称位于&#34; Application&#34; / src /&#34; package_name&# 34;并且通常类似于com.example.applicationname

我还想说我已经在代码中包含了注释,以便可以复制和粘贴它,而不必一次又一次地重新访问此链接,以防有人想要使用代码作为指导,而不是因为我希望在答案中张贴大量的代码。

答案 1 :(得分:0)

有时由于某些其他原因,onClick侦听器不起作用 透明视图位于视图之上。