まず第一に、あなたはBadTokenException
を取得している理由です、あなただけのランニングActivity
内から行うことができ、リモートサービスからダイアログを提示することはできません。
1)Activity
Theme.Dialog
とテーマ現在::
<activity
android:name="com.srgtuszy.activity"
android:theme="@android:style/Theme.Dialog"
/>
をまた、新しいタスクとしての活動を開始します。
Intent intent = new Intent(context, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
この方法であなたは、しかし、この問題の解決策がありますダイアログのように見えるアクティビティが得られます。
2)空と透明Activity
を提示し、
宣言活動の中からAlertDialog
を示し、以前と同じようにマニフェストに活動を開始したが、透明なテーマを使用します。
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
をこのアクティビティでonCreate()
メソッドを無効にして、setContentView()
とし、AlertDialog
としてください。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Context context = this;
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle("Hello!");
dialog.show();
}
これはもっと面倒なアプローチですが、この方法では、入力メソッドを無視しないでユーザーにダイアログを表示できます。たとえば、編集オプションを表示するために使用できます。
特定のイベントについてユーザーに通知したい場合は、Notifications
を使用することを検討してください。ユーザーが気を散らしてUIを汚染することはありません。
あなたのコードを貼り付けます。 –
CharSequence [] items = {"Red"、 "Green"、 "Blue"}; mCurKeyboard = simleyKey; mInputView.setKeyboard(mCurKeyboard); mInputView.closing(); AlertDialog.Builder builder =新しいAlertDialog.Builder(this); builder.setTitle( "色を選択"); builder.setItems(項目、新規DialogInterface.OnClickListener(){ 公共ボイドのonClick(DialogInterfaceダイアログ、INTアイテム){ Toast.makeText(getApplicationContext()、アイテム[アイテム]、Toast.LENGTH_SHORT).SHOW(); } })。show(); –
あなたの質問に書式設定されたコードを与え、TAb BArを使用していますか? –