Как они это делают? Диалоги на главном экране
Я пишу приложение для 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");
}
}