在打开该活动窗口的几秒钟内触发按钮按下

Posted

技术标签:

【中文标题】在打开该活动窗口的几秒钟内触发按钮按下【英文标题】:Trigger a button press within a few seconds of opening that activity window 【发布时间】:2016-05-06 03:02:00 【问题描述】:

有没有一种简单的方法可以在我的 android 应用程序中打开该窗口/活动后 1 秒内自动按下按钮。

目前我需要按下“bVoice”按钮以使用b.setOnClickListener(this) 开始语音识别。我希望在打开该特定窗口/活动后的 1 秒内自动按下按钮,而不是按下按钮。

有没有一种简单的方法来实现这一点?以下是我的部分代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener 

ListView lv;
static final int check = 1111;
Button b;
EditText a;
Button c;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView) findViewById(R.id.lvVoiceReturn);
    a = (EditText) findViewById(R.id.TFusername);
    b = (Button) findViewById(R.id.bVoice);
    c = (Button)findViewById(R.id.Blogin);

    b.setOnClickListener(this);


public void onButtonClick(View v) 
    if (v.getId() == R.id.Blogin) 
        String str = a.getText().toString();


        //Go to the relevant page if any part of the phrase or word entered in the 'EditText' field contains 'next' which is not case sensitive
        if (str.toLowerCase().contains("next")) 
            Intent userintent = new Intent(MainActivity.this, Display_1.class);
            startActivity(userintent);
         else if (str.toLowerCase().contains("heart")) 
            Intent userintent = new Intent(MainActivity.this, Display_2.class);
            startActivity(userintent);
         else 
            Toast.makeText(getApplicationContext(), "Incorrect Information", Toast.LENGTH_SHORT).show();
        
    

【问题讨论】:

为什么要点击按钮??您可以直接在 onCreate() 中检查该条件 所以我应该写 b.onCreate 而不是 setonclicklistener? 【参考方案1】:

设置onClickedListener

后,只需简单的解决方案在onCreate() 中添加以下代码
new Handler().postDelayed(new Runnable() 
            @Override
            public void run() 
              b.callOnClick();// from API 15
              or 
              b.performClick()// from API 1
            
        , 1000);

在performClick() & callOnClick()上查看更多信息

【讨论】:

【参考方案2】:

在您的 onCreate 中设置 onClickListener 后直接说明。

 new Handler().postDelayed(new Runnable() 
            @Override
            public void run() 
              b.callOnClick();
            
        , 1000);

不知道为什么你不只是编写一个方法而不是触发点击。

【讨论】:

我使用点击的唯一原因是因为这是我目前知道的唯一方法,我将如何实现一个方法,因为这将使我免于这个额外的步骤【参考方案3】:
@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lvVoiceReturn);
a = (EditText) findViewById(R.id.TFusername);

String str = a.getText().toString();

if (str.toLowerCase().contains("next")) 
        Intent userintent = new Intent(MainActivity.this, Display_1.class);
        startActivity(userintent);
     else if (str.toLowerCase().contains("heart")) 
        Intent userintent = new Intent(MainActivity.this, Display_2.class);
        startActivity(userintent);
     else 
        Toast.makeText(getApplicationContext(), "Incorrect Information", Toast.LENGTH_SHORT).show();
    

【讨论】:

以上是关于在打开该活动窗口的几秒钟内触发按钮按下的主要内容,如果未能解决你的问题,请参考以下文章

按下后退时 EditText 不会触发更改

uilongpressgesturerecognizer 只触发一次

菜单按钮触发另一个窗口

弹出窗口内的按钮不会触发弹出窗口外的点击事件

按下后退时,EditText不会触发更改

每日分享!JavaScript的鼠标事件(11个事件)