【问题标题】:Button OnClick action initiated after 6 seconds in android在 android 中 6 秒后启动按钮 OnClick 操作
【发布时间】:2016-07-18 05:17:50
【问题描述】:

我在线性布局中的活动中有 5 个按钮。 当我单击其中一个按钮时,我编写了一个代码来显示一条吐司消息。 点击操作 6 秒后,它会显示 toast 消息。 我想不出问题可能是什么。。 这是我在android studio中编写的代码

public class HomePage extends AppCompatActivity implements View.OnClickListener {

     private Button loginButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);

        makeNotificationBarTransparent();

        loginButton = (Button)findViewById(R.id.login_btn);

        loginButton.setOnClickListener(this);





        Intent i = getIntent();
        Toast.makeText(getApplicationContext(),i.getStringExtra("UserName"),Toast.LENGTH_LONG).show();
    }

    private void makeNotificationBarTransparent() {
        //Making notification bar transparent
        if(Build.VERSION.SDK_INT >= 21){
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){

            case R.id.login_btn:
                Toast.makeText(getApplicationContext(),"CLicked",Toast.LENGTH_LONG).show();
                break;
        }
    }
}

谁能告诉我可能是什么问题?

【问题讨论】:

  • 你在测试什么?
  • 到底是什么问题?
  • 尝试使用 logcat 检查何时处理点击:Log.d("FOO", "view_id=" + v.getID() 在您的 switch 语句之前。通过“adb logcat | grep FOO”关注并查看何时看到消息
  • 我正在我自己的安卓手机(API 23)上通过 adb 使用 USB 进行测试
  • 它正在检测点击。它正在返回这个。 '07-18 02:39:33.567 25590-25590/ssapps.com.smilesalon_0 D/FOO: view_id=2131558485'。但点击仅在几秒钟后检测到

标签: android android-button


【解决方案1】:

这可能是因为您显示了您设置显示的另一条 toast 消息,因为无法同时显示两条 toast 消息。

我指的是这个祝酒词:

        Toast.makeText(getApplicationContext(),i.getStringExtra("UserName"),Toast.LENGTH_LONG).show();

【讨论】:

  • 我已经删除了其他 Toast 消息,但问题仍然存在
  • @VidyaSagar 您是否正在运行任何可能占用大量内存的程序?可能只是某些事情让您的应用变慢了。
  • 是的。你可能是对的。我有一个 2.45MB 的 .png 文件作为我的布局中的背景图像。虽然我不得不问,图像的大小会减慢我的应用速度还是分辨率?
【解决方案2】:

您的意思是在单击按钮 6 秒后会显示 Toast 消息? 尝试使用这个:

Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
           @Override
           public void run() {
               // show toast here...
           }
    }, 6000); // 6 seconds

或者你可以使用 CountDownTimer:

new CountDownTimer(6000, 1000) {

    public void onTick(long millisUntilFinished) {
       // do every 1 second
    }

    public void onFinish() {
        // show your toast after 6 seconds.
    }

}.start();

这是你需要的吗?如果没有,请告诉我更多关于您的问题:)

【讨论】:

  • 在不使用任何东西的情况下,我的 Toast 消息会在几秒钟的点击操作后显示。我希望它在我单击时立即显示。
  • 在你上面的代码中,你在哪里使用 putExtra()? (我的意思是你从哪里得到StringExtra?)
  • 我通过意图从我之前的活动中获取字符串。我一直等到吐司消失,然后单击按钮。仍然它仅在几秒钟后显示它的吐司。我已经使用 Log.d("Id",v.getId()) 记录了视图。我可以得出结论,应用程序仅在实际点击后几秒钟后才听到点击,而不是立即识别点击。知道为什么会发生这种情况吗?
  • 完全正确...我不知道为什么会这样
猜你喜欢
  • 2015-09-01
  • 2016-12-04
  • 2016-09-29
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2015-11-08
相关资源
最近更新 更多