在 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 =true
。 NoHistory =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
所以我正在尝试制作一个 android 应用程序,它以登录页面(我认为可能是一个对话框片段)开始,如果用户的凭据正确,那么他将被定向到应该是导航抽屉应用程序的主要应用程序。我尝试使用对话框片段,但我不知道如何将其设置为在最开始出现。我该怎么办?
您应该创建一个 Activity 作为 MainLauncher
,Activity 您可以像下面的代码那样使用空白 Layout.xml
,然后像下面的代码那样弹出一个 DialogFragment。注意:您应该在 Activity
属性中添加 MainLauncher = true,NoHistory =true
。 NoHistory =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