相关疑难解决方法(0)

如何检测Android应用程序何时进入后台并返回前台

我正在尝试编写一个应用程序,它会在经过一段时间后返回到前台时执行某些特定操作.有没有办法检测应用程序何时发送到后台或带到前台?

android background foreground

369
推荐指数
18
解决办法
27万
查看次数

当我想要展示其他Toast时,我可以取消之前的Toast吗?

在我的应用程序中,我为我的活动构建了一个日历小部件,当我将其滚动到上个月或下个月时,我让它进行祝酒并显示它.

问题是,吐司需要时间显示,当我滚动得足够快时,例如,我滚动到"2012/05"和"2012/06"并滚动到"2012/07"而没有停顿,我必须等待"2012/05","2012/06","2012/07"的吐司慢慢地逐一展示.

似乎Android有一个不可见的队列来管理祝酒词

我怎样才能清理它并且只显示最后的吐司?我可以立即显示特定的Toast而无需等待吗?

我搜索了"android.widget.Toast.java"并找到了一个方法cancel(),但不幸的是它不能如下工作.

if (t != null) {
    t.cancel();
}
t = Toast.makeText(this.mContext, mHelper.getYear() + "?"
                + (mHelper.getMonth() + 1) + "?", Toast.LENGTH_SHORT);
t.show();
Run Code Online (Sandbox Code Playgroud)

android toast

30
推荐指数
5
解决办法
3万
查看次数

Android退出应用程序时以及正在显示toast时取消Toast

我在这里已经阅读过这类问题,但答案似乎没有奏效.

Toast在用户点击按钮时显示.当用户不断点击按钮时,即使用户退出活动,烤面包仍会一次又一次地显示.

吐司的长度很短.由于文本很长,因此无法更改Toast的长度.

这就是我现在所尝试的:

    Toast toast;
    toast=Toast.makeText(getApplicationContext(),"text",Toast.LENGTH_SHORT);
    if(toast.getView().isShown()==false){
         toast.show();
    }
Run Code Online (Sandbox Code Playgroud)

这没用.

我试过了 :

    if(toast.getView().isShown()==true){            
        toast.cancel();
    }
Run Code Online (Sandbox Code Playgroud)

onStop().由于某种原因,取消方法永远不会有效.

如果我把.cancel()之前我显示应用程序...那么将有另一个空检查.但这样做之后也无效.我可以显示一个对话框而不是一个吐司,但这不是一个解决方案.

有没有办法检查是否正在显示吐司?

以供参考

android toast

9
推荐指数
2
解决办法
7515
查看次数

停止Toast并在android中启动另一个

我在我的应用程序中使用Toast.当我按下按钮时,它显示一个Toast.我的问题是,第二次按下按钮时,第二次吐司正在"等待"第一次结束并且仅显示...我希望当前的一个立即显示而不是等待.这是我的简单代码:

toast = Toast.makeText(getApplicationContext(), "Press Back to retorn to the main page", Toast.LENGTH_SHORT);
toast.show();
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

android toast

6
推荐指数
2
解决办法
9672
查看次数

在方向改变时调用onDestroy被调用?

我有一个运行4.4.2的股票Nexus 5(如果重要的话使用ART),我发现了一个有趣的场景.我有这个作为我的onDestroy():

@Override
protected void onDestroy() {
    super.onDestroy();
    t.setText("onDestroy");
    t.show();
}
Run Code Online (Sandbox Code Playgroud)

这是一个面向GPS的应用程序,所以我起来走动.我正在使用此问题中提到的技术来显示许多调试Toast消息.

无论如何,当我旋转我的应用程序时,会出现吐司.我知道活动被破坏并为新方向重新创建,但我怎么知道实际发生了什么?如何判断我的应用程序何时被破坏而不仅仅是被轮换?与此问题类似,我想在特定活动被销毁时注销.

android android-activity

5
推荐指数
1
解决办法
5152
查看次数

以编程方式安装Android Toast通知?

有没有办法可以通过编程方式停止Toast消息?

假设我有一个按钮,我单击滚动查看Toast消息,在onclick事件中我想停止所有队列并显示新的,我该怎么做?

我的代码的简化版本如下 - 代码:

public class Help extends Activity{

LinearLayout background;
int screenNo = 1;
Toast toast;

 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.help);

       background = (LinearLayout) findViewById(R.id.helpLayout);

        ImageButton next = (ImageButton) findViewById(R.id.imageButtonNext);
        next.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                toast.cancel();
                showNextScreen();
            }});        
 }

private void showMessageBox(String title, String msg) {
    AlertDialog.Builder b = new AlertDialog.Builder(this);
     b.setTitle(title);
     b.setMessage(msg);
     b.setPositiveButton("Next", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface arg0, int …
Run Code Online (Sandbox Code Playgroud)

java notifications android onclick toast

3
推荐指数
1
解决办法
5977
查看次数

如何停止显示在 android 队列中的 Toast 消息

下面的代码显示了我目前的实现,这里正在创建一个 toast 对象并在 onPause() 中关闭。这工作正常,直到没有敬酒队列。

public static long **savedTimeStamp=0**;
    Toast showToastMessage;

if(System.currentTimeMillis()/1000 - savedTimeStamp >= 60 || savedTimeStamp==0){
    showToastMessage=Toast.makeText(this.this, "Toast message", Toast.LENGTH_LONG);
    showToastMessage.show();
    savedTimeStamp=System.currentTimeMillis()/1000;
}

    @Override
             protected void onPause() {
                  super.onPause();
                  if(showToastMessage!=null)
                    {
                    showToastMessage.cancel();
                    }
    }
Run Code Online (Sandbox Code Playgroud)

android toast

2
推荐指数
1
解决办法
3069
查看次数

如何显示在Android中立即覆盖旧Toast的新Toast

我在android中以对话框的形式显示了一个值数组,点击任何项目,显示特定的吐司.现在,如果我在下一刻点击此列表(阵列)上的其他项目,则在短时间(大约5秒)之后显示该特定的吐司,直到显示旧的吐司.如果我想在选择/点击列表中的其他项目后立即显示新的Toast,我该怎么办

那么有人可以告诉我实现这一目标的逻辑是什么?

例如,考虑这个代码 -

     String NumberOfItems[] = { "1", "2", "3" };
     Activity mActivity;
     int id =0;
     AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
     builder.setIcon(R.drawable.ic_launcher);
     builder.setTitle(R.string.dialog_heading);
     builder.setSingleChoiceItems(NumberOfItems, id, new DialogInterface.OnClickListener() 
      {
        public void onClick(DialogInterface dialog, int id)
         {

       switch(id)
         {
         case 0:
              Toast.makeText(mActivity.getBaseContext(),"Item selected is 1",Toast.LENGTH_SHORT).show();
                   break;
         case 1:
              Toast.makeText(mActivity.getBaseContext(),"Item selected is 2",Toast.LENGTH_SHORT).show();
                   break;
         case 2:
              Toast.makeText(mActivity.getBaseContext(),"Item selected is 3",Toast.LENGTH_SHORT).show();
                   break;

                } 

          }
        });  
            AlertDialog alertDialog =  builder.create();
            alertDialog.show(); 
Run Code Online (Sandbox Code Playgroud)

现在显示包含3个项目的对话框,点击第1项显示"项目选择为1"很快我点击下一个项目但在~5秒后显示"项目选择为2" .但如果我想立即显示第二项,我该怎么办?

简而言之,刷新Toast的逻辑是什么?

任何帮助是极大的赞赏.

android dialog toast

2
推荐指数
1
解决办法
2945
查看次数