![](/img/trans.png)
[英]Placement of Dialog box in android studio main activity of Android
[英]Android Login box on main activity
首先,我是Android的新手,对任何不合理的内容表示歉意。
我在这里要做的是显示Main活动并显示AlertDialog,要求输入短密码(完整的用户名和密码将保存在Preferences中)。 如果密码不匹配,我需要找到一种退出应用程序的方法,否则,请加载主活动。
到目前为止,这是我的代码:
public class MainActivity extends Activity implements OnClickListener
{
Button screening;
Button screeningLog;
@Override
protected void onCreate (Bundle savedInstanceState)
{
resetPreferences ();
// Set theme
setTheme (App.getTheme ());
setContentView (R.layout.main);
super.onCreate (savedInstanceState);
createControlsAndListeners ();
if (!App.isLoggedIn ())
{
final LinearLayout view = new LinearLayout (this);
final TextView passcodeText = new TextView (this);
final EditText passcode = new EditText (this);
passcodeText.setText (R.string.passcode);
passcode.setHint (R.string.passcode_hint);
passcode.setInputType (InputType.TYPE_TEXT_VARIATION_PASSWORD);
view.setOrientation (LinearLayout.VERTICAL);
view.addView (passcodeText);
view.addView (passcode);
AlertDialog.Builder builder = new AlertDialog.Builder (this);
builder.setTitle ("Enter Passcode.");
builder.setView (view);
builder.setPositiveButton (R.string.login, new DialogInterface.OnClickListener ()
{
public void onClick (DialogInterface dialog, int whichButton)
{
if (App.get (passcode).equals (App.getPassword ().substring (0, 4)))
{
App.setLoggedIn (true);
dialog.dismiss ();
}
else
{
Toast toast = Toast.makeText (MainActivity.this, Error.get (Error.AUTHENTICATION),
App.getDelay ());
toast.show ();
}
}
});
builder.show ();
}
}
public void resetPreferences ()
{
PreferenceManager.setDefaultValues (this, R.xml.preferences, false);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences (this);
App.setServer (preferences.getString ("server", ""));
App.setUsername (preferences.getString ("username", ""));
App.setPassword (preferences.getString ("password", ""));
App.setNightMode (preferences.getBoolean ("night_mode", false));
App.setDelay (Integer.parseInt (preferences.getString ("delay", "30000")));
}
private void createControlsAndListeners ()
{
screening = (Button) findViewById (R.main_id.screeningButton);
screening.setOnClickListener (this);
screeningLog = (Button) findViewById (R.main_id.screeningLogButton);
screening.setOnClickListener (this);
}
}
试试这个可能对您有帮助。 您可以为此使用意图。
AlertDialog.Builder builder = new AlertDialog.Builder (this);
builder.setTitle ("Enter Passcode.");
builder.setView (view);
builder.setPositiveButton (R.string.login, new DialogInterface.OnClickListener ()
{
public void onClick (DialogInterface dialog, int whichButton)
{
if (App.get (passcode).equals (App.getPassword ().substring (0, 4)))
{
App.setLoggedIn (true);
dialog.dismiss ();
}
else
{
Toast toast = Toast.makeText (MainActivity.this, Error.get (Error.AUTHENTICATION),App.getDelay ());
toast.show ();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
});
builder.show ();
或者,如果这是您在应用程序中的第一个活动,则在其他情况下调用finish()
方法。
AlertDialog.Builder builder = new AlertDialog.Builder (this);
builder.setTitle ("Enter Passcode.");
builder.setView (view);
builder.setPositiveButton (R.string.login, new DialogInterface.OnClickListener ()
{
public void onClick (DialogInterface dialog, int whichButton)
{
if (App.get (passcode).equals (App.getPassword ().substring (0, 4)))
{
App.setLoggedIn (true);
dialog.dismiss ();
}
else
{
Toast toast = Toast.makeText (MainActivity.this, Error.get (Error.AUTHENTICATION),App.getDelay ());
toast.show ();
finish();
}
}
});
builder.show ();
好吧,在Android中确实没有“退出应用程序”。 但是,如果您真的想提供这种功能,我想您可以通过一个Intent将用户引导到主屏幕(请参阅Intent )。
您可以简单地在活动上调用finish()将其关闭。
如果要退出,可以使用finish();。
关于存储密码的共享首选项,建议您阅读以下文章: 在Android应用程序中存储用户设置的最合适方法是什么
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.