【问题标题】:How can i fire button click event to call another function?如何触发按钮单击事件来调用另一个函数?
【发布时间】:2013-12-19 12:37:10
【问题描述】:

我有 3 个按钮,当我单击其中一个按钮时,它们会打开我的联系人列表。然后我选择某人,我得到一个电话号码,我想将该号码设置为按钮的文本。我的问题是:如何处理在该功能中按下了哪个按钮。 Performclick 对我不起作用。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data != null) {
            Uri uri = data.getData();

            if (uri != null) {
                Cursor c = null;
                try {
                    //for get number and name from contacts
                    c = getContentResolver().query(uri, new String[]{ 
                            ContactsContract.CommonDataKinds.Phone.NUMBER,  
                            ContactsContract.Contacts.DISPLAY_NAME },
                            null, null, null);

                    if (c != null && c.moveToFirst()) {
                        number = c.getString(0);
                        name=c.getString(1);

                        if(Number1.performClick()){
                            Toast.makeText(this, "1", Toast.LENGTH_SHORT).show();
                        }else if(Number2.performClick()){
                            Toast.makeText(this, "2", Toast.LENGTH_SHORT).show();                       
                        }
                        else if(Number3.performClick()){
                            Toast.makeText(this, "3", Toast.LENGTH_SHORT).show();                       
                        }

                }

                    }
                    finally {
                        if (c != null) {
                            c.close();
                        }
                    }
                }

            }

【问题讨论】:

  • 我不清楚“将数字设置为按钮”是什么意思。如果只想设置按钮的标题,请使用 setText(CharSequence) 方法。
  • 在 xml 视图中为按钮提供 id 并在 perfrClick.. 时检查它。
  • Bu 像软点击一样执行点击。意味着以编程方式。你知道任何触发事件

标签: android button event-handling


【解决方案1】:

试试这个:

//..
int currentButtonId;
//..
@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.button1:
        currentButtonId = R.id.button1;
        button1Clicked();
        break;
    case R.id.button2:
        currentButtonId = R.id.button2;
        button2Clicked();
        break;
    case R.id.button3:
        currentButtonId = R.id.button3;
        button3Clicked();
        break;

    default:
        break;
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (currentButtonId) {
    case R.id.button1:
        fromButton1();
        break;
    case R.id.button2:
        fromButton2();
        break;
    case R.id.button3:
        fromButton3();
        break;

    default:
        break;
    }
}

【讨论】:

    【解决方案2】:

    您可以在调用联系人列表时发送不同的2 request code,并在onAcitivityResult() 中检查请求代码。

    或者您可以创建一个static int 变量来保存单击的按钮ID,并根据此变量设置结果。

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 2021-12-21
      • 2011-04-03
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多