Как они это делают? Диалоги на главном экране

Я пишу приложение для Android, и я хотел бы разместить диалог или представление по главному экрану, чтобы пользователь мог вводить текст, не вскакивая в мое полное приложение. Кажется, я не могу заставить это работать. Если я представляю диалог (даже в прозрачной активности), мое приложение запускается.

Если вы не знаете, о чем я говорю, взгляните на виджет Facebook. Я хочу воспроизвести подобное поведение, нажав на "Что вы думаете?" коробка.

Спасибо за любую помощь заранее!

-Брайан

Ответ 1

Моя проблема заключалась в том, что приложение всегда запускалось для отображения диалогового окна.

Чтобы решить эту проблему, я установил режим активности lauch в singleInstance в манифесте. Теперь он отображает диалог на главном экране!

Ответ 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>

Но в моем коде есть два разных плавающих окна: мой макет и плитка. Вот следующий код:

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

}