【问题标题】:Android - Popup dialog on home/native screensAndroid - 主/本机屏幕上的弹出对话框
【发布时间】:2013-08-08 07:44:22
【问题描述】:

edit:问题是试图显示对话框并在下一行完成()活动,因此对话框没有显示视图!如果我可以将主屏幕设置为对话框的上下文会更容易。

这里是新手。我知道这个问题已经被问过很多次了,但到目前为止还没有完整的解决方案。我最开始在没有GUI的情况下运行一些代码,通过简单的设置主题就成功了。现在,我想添加对话框来显示代码中的错误,但我无法让它显示出来!

<activity android:name="PopupActivity"
  android:launchMode="singleInstance" android:excludeFromRecents="true"
  android:taskAffinity="" android:theme="@android:style/Theme.Dialog" />

所以我创建了一个以 wrap_content 作为宽度和高度的空视图,但我不确定应该为活动中的 AlertDialog 对象使用哪个视图元素。我已经在另一个活动中用视图测试了我的所有代码,一切正常,AlertDialog 显示没有问题。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:gravity="center_horizontal">
</LinearLayout>

有简单的解决方案吗?或者我必须将 Theme.Dialog 视图视为普通视图并添加 textview 和按钮来模拟对话框?

我使用 AlertDialog.Builder 来创建对话框:

AlertDialog.Builder alertDialogB = new AlertDialog.Builder(cont);
alertDialogB.setTitle(title);
alertDialogB.setMessage(msg);
...
...

IDE:IntelliJ
SDK:4.1.2

【问题讨论】:

    标签: android dialog popup


    【解决方案1】:

    您可以使用不同的解决方案创建简单的对话框,但我首先使用它。

    我在这里添加带有代码的文件列表以澄清您的疑问:

    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.demo"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="17" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.demo.LoginActivity"
                android:label="@string/app_name"
                android:launchMode="singleInstance">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name="com.demo.HomeActivity"
                android:label="@string/title_activity_home" 
                android:theme="@android:style/Theme.Dialog">
            </activity>
        </application>
    
    </manifest>
    

    LoginActivity.java

    package com.demo;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.app.Activity;
    
    public class LoginActivity extends Activity {
    
        Button login_btn;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            login_btn=(Button) findViewById(R.id.btnlogin);
            login_btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i=new Intent(getApplicationContext(),HomeActivity.class);
                    startActivity(i);
                }
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_login, menu);
            return true;
        }
    
    }
    

    activity_login.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".LoginActivity" 
        android:layout_gravity="center">
    
        <Button
            android:id="@+id/btnlogin"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Login"/>
    
    </LinearLayout>
    

    还有一个作为登录活动警报对话框的活动 HomeActivity.java

    package com.demo;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.view.Menu;
    
    public class HomeActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_home);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_home, menu);
            return true;
        }
    
    }
    

    activity_home.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".HomeActivity" 
        android:orientation="vertical">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="@string/hello_world" />
    
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    

    【讨论】:

    • 如果您愿意,我会向您发送另一个解决方案,该解决方案将使用列表视图动态创建警报对话框。谢谢。
    • 感谢 Sanket Thakkar,感谢您的回答和您的时间。实际上,除了在显示对话框之前完成()活动之外,我已经完成了所有工作。正如我所料,不需要视图!我也在尝试为简单对话框创建通用对话框库...
    【解决方案2】:

    不确定我的问题是否正确,但您使用AlertDialog.Builder(getActivity); 的活动 然后就Dialog dialog = builder.create(); dialog.show();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多