【问题标题】:How do they do it? Dialogs over home screen他们是怎么做到的呢?主屏幕上的对话框
【发布时间】:2010-04-24 16:12:46
【问题描述】:

我正在编写一个 Android 应用程序,我想在主屏幕上放置一个对话框或视图,以便用户无需跳转到我的完整应用程序即可输入文本。我似乎无法让它工作。如果我呈现一个对话框(即使是在一个透明的活动中),我的应用程序也会启动。

如果您不知道我在说什么,请查看 Facebook 小部件。我想复制与单击“你在想什么?”类似的行为。盒子。

提前感谢您的帮助!

-布赖恩

【问题讨论】:

  • “如果我呈现一个对话框(即使是在一个透明的活动中),我的应用程序也会启动。”这对你意味着什么?对我来说,“应用程序”将必须启动,否则您的代码将无法运行。

标签: android text dialog android-widget


【解决方案1】:

我的问题是应用程序总是启动以显示对话框。

为了解决这个问题,我在清单中将活动启动模式设置为singleInstance。现在它会在主屏幕上显示对话框!

【讨论】:

  • Altought 它在工作,它在 andoid 6 中产生了错误,(是的,我看到这是一个老问题,但谷歌并不关心......)。您必须使用“documentLaunchMode”来防止它在“最近的屏幕”中覆盖您自己的应用程序(特别是如果您还使用 excludeFromRecents)。
【解决方案2】:

他们正在启动一项活动,但他们已设置活动的主题,使其看起来像一个对话框。

在您的清单中,您必须在 <activity> 标签下添加类似这样的内容:android:theme="@android:style/Theme.Dialog"

【讨论】:

  • 谢谢,但是如何从我的应用小部件开始活动?我似乎无法弄清楚未决的意图。谢谢!
【解决方案3】:

非常感谢,我尝试使用 Theme.Dialog

  <activity android:name=".language"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.Dialog">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

但在我的代码中,有 2 个不同的浮动窗口:我的布局和磁贴。下面是代码:

import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.app.Dialog; 

public class language extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.main);
        Dialog dialog = new Dialog(this); 
        dialog.setContentView(R.layout.main); 
        dialog.setTitle("Raygional"); 
        dialog.show();

    }
}

PS:我知道这应该是一个问题而不是一个答案

【讨论】:

  • 那你为什么把它作为答案发布?
  • 其他想要在主屏幕上进行对话的人可能会感兴趣。
【解决方案4】:

为此使用服务

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.getApplicationContext().startActivity(intent);

下面是一些代码`

public class HomepopupDataService extends Service {

private static final String TAG = "HomepopupDataService";

@Override
public void onCreate() {
    Log.i(TAG, "Service onCreate");
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub
    Log.i(TAG, "Service onStartCommand");

    CountDownTimer dlgCountDown;
    Log.e("---------------", "onHandleIntent");
    dlgCountDown = new CountDownTimer(10000, 1000) {
        public void onTick(long millisUntilFinished) {
            Log.e("---------------", "onHandleIntent++");
        }

        public void onFinish() {
            Intent i = new Intent(getApplicationContext(),
                    DialogActivity.class);

            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            getApplicationContext().startActivity(i);
        }
    }.start();
    return super.onStartCommand(intent, flags, startId);
}

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    Log.i(TAG, "Service onBind");
    return null;
}

@Override
public void onDestroy() {
    Log.i(TAG, "Service onDestroy");
}

}

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 2011-03-04
    • 2011-07-19
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多