Android按钮Onclick监听器无法正常工作

时间:2014-11-09 06:12:44

标签: android android-activity onclicklistener android-button

我的活动上有两个按钮。一个是完美的,一个不是。我似乎无法找到问题。这是代码。 create_profile 按钮无效。有人可以告诉我为什么吗?

    private Button create_profile,select_contact;

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.create_main);

    select_contact = (Button)findViewById(R.id.add_contact);
    create_profile = (Button)findViewById(R.id.create_button);

    select_contact.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            final Uri uriContact = ContactsContract.Contacts.CONTENT_URI;
            Intent intentPickContact = new Intent(Intent.ACTION_PICK, uriContact);
            startActivityForResult(intentPickContact, PICK_CONTACT);    
        }
    });

    create_profile.setOnClickListener(new OnClickListener() {

        @SuppressLint("ShowToast")
        @Override
        public void onClick(View arg0) {
            Toast.makeText(getApplicationContext(), "Pressed", Toast.LENGTH_LONG);
            System.out.println("PRessed");

        }
    });
    }

这是xml代码

          <Button 
                    android:id="@+id/add_contact"
                    android:layout_width="85dp"
                    android:layout_height="wrap_content"
                    android:text="Add"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="2dp"
                    android:textSize="19dp"/>
        <Button 
            android:id="@+id/create_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:text="Create Profile"
            android:textSize="18sp"
            android:layout_marginTop="8dp"/>

我检查了一切,但似乎无法找到问题。

2 个答案:

答案 0 :(得分:6)

你好,为什么不露面。托盘代码应该是这样的。

 Toast.makeText(getApplicationContext(), "Pressed", Toast.LENGTH_LONG).show();

答案 1 :(得分:0)

您可以尝试创建一个OnClickListener变量,然后将两个按钮设置为同一个变量,并将它们与switch case语句分开,如下所示:

OnClickListener onClickListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.add_contact:
             //Do what you want for select_contact
            break;
        case R.id.create_button:
            //Do what you want for create_button
            break;
        default:
            break;
        }


    }
};

在OnCreate方法中,设置如下:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        select_contact = (Button)findViewById(R.id.add_contact);
        create_profile = (Button)findViewById(R.id.create_button);
        select_contact .setOnClickListener(onClickListener);
        create_profile .setOnClickListener(onClickListener);

}

如果你想检查它,只需在案例R.id.create_button

行下添加一个断点

即使这没有解决您的问题,我相信使用onClickListener方法更方便,更舒适地工作:)