在 xamarin.android 中移动到主应用程序之前显示登录页面

show a login page before moving to main app in xamarin.android

所以我正在尝试制作一个 android 应用程序,它以登录页面(我认为可能是一个对话框片段)开始,如果用户的凭据正确,那么他将被定向到应该是导航抽屉应用程序的主要应用程序。我尝试使用对话框片段,但我不知道如何将其设置为在最开始出现。我该怎么办?

您应该创建一个 Activity 作为 MainLauncher,Activity 您可以像下面的代码那样使用空白 Layout.xml,然后像下面的代码那样弹出一个 DialogFragment。注意:您应该在 Activity 属性中添加 MainLauncher = true,NoHistory =trueNoHistory =true 将使后退按钮导航到桌面。

namespace App2
{
    [Activity(Label = "LoginActivity", Theme = "@style/AppTheme.NoActionBar",MainLauncher = true,NoHistory =true)]
    public class LoginActivity : AppCompatActivity, OnLoginInforCompleted
    {
        public void inputLoginInforCompleted(string userName, string passWord)
        {
            //You can get the username and password here
            StartActivity(new Intent(this,typeof(MainActivity)));
        }

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.LoginLayout);
           
            MyDialogFragment dialogFragment = new MyDialogFragment();
            dialogFragment.setOnLoginInforCompleted(this);
            dialogFragment.Cancelable = false;
            var SupportFragmentManager = this.FragmentManager;
            dialogFragment.Show(SupportFragmentManager, "dialog");
            
        }
    }
}

我实现了一个回调接口OnLoginInforCompleted,如果用户点击登录按钮,将导航到导航抽屉页面。

 public interface OnLoginInforCompleted
    {
        void inputLoginInforCompleted(String userName, String passWord);
    }

这是关于 MyDialogFragment .

的代码
    public class MyDialogFragment : DialogFragment
    {
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View view = inflater.Inflate(Resource.Layout.layout3, container, false);
            Button button = view.FindViewById<Button>(Resource.Id.button1);
            EditText MyeditText1 = view.FindViewById<EditText>(Resource.Id.editText1);
            EditText MyeditText2 = view.FindViewById<EditText>(Resource.Id.editText2);
            button.Click += delegate {
                //set the data to the loginpage
                mOnLoginInforCompleted.inputLoginInforCompleted(MyeditText1.Text.ToString(), MyeditText2.Text.ToString());
              
                Dismiss();
            };
            return view;
            
        }

        //set for Callback
        private OnLoginInforCompleted mOnLoginInforCompleted;
        public void setOnLoginInforCompleted(OnLoginInforCompleted onLoginInforCompleted)
        {
            mOnLoginInforCompleted = onLoginInforCompleted;
        }

        public override Dialog OnCreateDialog(Bundle savedInstanceState)
        {
            return base.OnCreateDialog(savedInstanceState);
        }
    }

这是运行 GIF。

这是我的demo,你可以参考一下

https://github.com/851265601/Xamarin.Android_ListviewSelect/blob/master/App2.zip