【问题标题】:How to create AlertDialog when transact or start a new Activity?交易或启动新活动时如何创建 AlertDialog?
【发布时间】:2019-09-23 20:06:04
【问题描述】:
public void loadDialog() {
    LayoutInflater inflater = LayoutInflater.from(this);
    View subView = inflater.inflate(R.layout.dialogbox_delete_user_confirmation, null);

    subView.findViewById(R.id.txtDeleteUser);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Fill your Secondary Details");
    builder.setView(subView);
    builder.create();

    builder.show();
}

在这里,我在ActivityonCreate()方法中调用了loadDialog()函数。但是当我加载特定的Activity时,AlertDialog没有提示。 我只是创建了login 活动。成功后login 新活动将开始。但同时,我想在活动交易时显示Alert Dialog 框。我该怎么做?

【问题讨论】:

  • 你确定调用了 loadDialog() 吗?在那里放置一个日志并查看它是否打印或尝试显示敬酒以查看您是否从正确的线程作为其 UI 调用该函数并且需要从 UI 线程调用...
  • 糟糕!即使我在 onCreate 函数中调用它,loadDialog() 也没有执行......这是什么原因?
  • 您将不得不回溯以查看执行到哪个函数...包括 onCreate()

标签: android android-intent


【解决方案1】:

您可以通过两种简单的方式做到这一点。分别是:-

  • 使用BaseActivity 在这种情况下,您需要创建一个base activity,它的AlertDialog 将是context,(当前您的dialog 缺少上下文,而交易)无论何时你想展示它,你都可以通过在从任何其他child activities扩展BaseActivity之后实现该方法来展示它。步骤如下:

     public class BaseActivity extends AppCompatActivity {
    
           public void showDialog(String msg)
           {
             // show the dialog
           }
         }
    
     public class Activity1 extends BaseActivity
        {
         public void someFunction()
         {
             showDialog("activity 1");
         }
     }
    
     public class Activity2 extends BaseActivity
     {
         public void someFunction()
         {
             showDialog("activity 2");
         }
     }
    
  • 使用Fragments 在此您可以从各自的activityfragment 本身控制它。但这与您当前的程序完全不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 2015-11-25
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多