相关疑难解决方法(0)

在Android中:如何从服务调用活动的功能?

我有一个活动(A)和一个服务(S),它由A启动,如下所示:

Intent i = new Intent();
i.putExtra("updateInterval", 10);
i.setClassName("com.blah", "com.blah.S");
startService(i);
Run Code Online (Sandbox Code Playgroud)

A在A中有这样的功能:

public void someInfoArrived(Info i){...}
Run Code Online (Sandbox Code Playgroud)

现在我想从S.内部调用A.someInfoArrived(i).Inntnt.putExtra没有我可以传递Object引用等的版本...请帮忙!

PS:另一种方式(新信息的轮询S)不是我需要的.我找到了关于如何做到这一点的足够信息.

service android callback android-intent android-activity

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

从onCreateDialog创建的ProgressDialog在第二次运行时停止动画

我这样创建一个ProgressDialogin onCreateDialog():

protected Dialog onCreateDialog(int id) {
  if (id == DIALOG_PROGRESS_ID)
  {
      ProgressDialog dialog = new ProgressDialog(this);
      dialog.setMessage(getResources().getString(R.string.MyLabel));
      dialog.setCancelable(false);
      dialog.setIndeterminate(true);
      return dialog;
  }
}
Run Code Online (Sandbox Code Playgroud)

Android智慧(或严重缺乏它)决定缓存通过onCreateDialog()创建的每个对话框.因此,任何后续调用都会showDialog(DIALOG_PROGRESS_ID)导致使用相同的ProgressDialog实例,但动画已停止工作.

我试图重新设置不确定onPrepareDialog(),但这没有做任何事情.同样没有明显的方法来调用将重置动画的对话框实例.

protected void onPrepareDialog(int id, Dialog dialog)
{
  //This doesn't do anything
  if (id == DIALOG_PROGRESS_ID)
     ((ProgressDialog)dialog).setIndeterminate(true);
  super.onPrepareDialog(id, dialog);
}
Run Code Online (Sandbox Code Playgroud)

编辑:但也许有一种方法可以获得ProgressBar本身并开始动画制作?所以在我问这个问题之后我尝试了以下内容:

@Override
protected void onPrepareDialog(int id, Dialog dialog)
{
  if (id == DIALOG_PROGRESS_ID)
  {
     ProgressBar p = (ProgressBar) dialog.findViewById(android.R.id.progress);
     if (p.getAnimation() != null)
        p.startAnimation(p.getAnimation());
  }
  super.onPrepareDialog(id, dialog);
Run Code Online (Sandbox Code Playgroud)

} …

android progressdialog

6
推荐指数
1
解决办法
5457
查看次数