他们是如何做到的呢?主屏幕上的对话框

时间:2010-04-24 16:12:47

标签: android text dialog android-widget

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

如果您不知道我在说什么,请查看Facebook小部件。我想复制一个类似的行为来点击“你在想什么?”框。

提前感谢您的帮助!

-Brian

4 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:7)

他们正在启动一项活动,但是他们设置了活动的主题,因此它看起来像一个对话框。

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

答案 2 :(得分: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>

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

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:我知道这应该是一个问题而不是一个答案

答案 3 :(得分:0)

使用服务

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");
}

}