Android 退出时清除其他活动中的密码字段
我需要在应用程序退出时清除密码字段,我在其他活动中退出应用程序,在退出时转到mainActivity,其中包含登录详细信息,我需要在其中清除密码字段,我将如何在其他活动中执行此操作,我尝试使用setText(“”),但没有成功Android 退出时清除其他活动中的密码字段,android,Android,我需要在应用程序退出时清除密码字段,我在其他活动中退出应用程序,在退出时转到mainActivity,其中包含登录详细信息,我需要在其中清除密码字段,我将如何在其他活动中执行此操作,我尝试使用setText(“”),但没有成功 public void backButtonHandler() { AlertDialog.Builder alertDialog = new AlertDialog.Builder( ReminderActivity.th
public void backButtonHandler() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
ReminderActivity.this);
// Setting Dialog Title
alertDialog.setTitle("Leave application?");
// Setting Dialog Message
alertDialog.setMessage("Are you sure you want to leave the application?");
// Setting Positive "Yes" Button
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//I need to clear here all pwd data present in MainActivity in edittext
finish();
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to invoke NO event
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
在您的
main活动中
执行以下操作:
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
editText.SetText("");
}
因此,只要恢复
main活动
,它就会清除editText
值。在main活动
中,执行以下操作:
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
editText.SetText("");
}
因此,只要恢复
main活动
,它就会清除editText
值。在main活动
中,执行以下操作:
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
editText.SetText("");
}
因此,只要恢复
main活动
,它就会清除editText
值。在main活动
中,执行以下操作:
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
editText.SetText("");
}
因此,无论何时恢复您的
main活动
,或单击登录按钮,它都会清除editText
值。
editText.SetText(“”)
然后,在另一个活动开始之前或单击“登录”按钮时,它将被清除 editText.SetText(“”)
然后,在另一个活动开始之前或单击“登录”按钮时,它将被清除 editText.SetText(“”)
然后,在另一个活动开始之前或单击“登录”按钮时,它将被清除 editText.SetText(“”)
然后,在另一个活动开始之前,它将被清除。如果您的活动不再在内存中,则使用setText将无法工作,甚至可能引发某种类型的NPE。 根据您的要求,有几种方法可以做到这一点:
public void onStop()
{
super.onStop();
myTextField.setText("");
}
您的应用程序类:
public class MyApplication extends Application
{
...
private static final class MyActivityLifeCycleCallback implements ActivityLifecycleCallbacks
{
@Override
public void onActivityStopped(Activity activity)
{
//Here, I am assuming that your class name is MainActivity
Log.i(TAG, "onActivityStopped:" + activity.getLocalClassName());
if("MainActivity".isEqual(activity.getLocalClassName())
{
myDataModel.getInstance().setPassword("");
//or if your password String member is static
//((MainActivity)activity).myPasswordMember = "";
}
//Or if you want to only clear the password text when RAActivity stops, simply replace "MainActivity" with the RAActivity class name.
}
@Override
public void onActivityDestroyed(Activity activity,
Bundle savedInstanceState)
{
Log.i(TAG, "onActivityDestroyed:" + activity.getLocalClassName());
if(activity.getLocalClassName().contains("MySecondActivity"))
{
//reset your password here - implementation will depend on how you have your data model organized (private, singleton, static, etc.)
}
}
....
}
请记住,这种设计可以很好地与某种类型的单例或中心数据模型(想想MVC体系结构)配合使用,这样您就可以将数据中的更改传播到组件中
希望能有帮助
编辑:
我已经根据你的评论添加了代码。但老实说,我认为最好像我建议的那样,在MainActivity的onStop函数中调用setText(“”)方法。这是一个简单的问题,我的第二个设计可能有点太多了。无论如何,代码已经更新,因此如果您喜欢,请将其标记为答案:)
还有一个想法。如果RAActivity使用startActivity再次调用MainActivity(可能不是),您只需将一个bundle值传递给MainActivity,告诉它它来自RAActivity。这样,如果从RAActivity调用,MainActivity可以清除密码。有很多选择。如果您的活动已不在内存中,则使用setText将不起作用,甚至可能引发某些类型的NPE。 根据您的要求,有几种方法可以做到这一点:
public void onStop()
{
super.onStop();
myTextField.setText("");
}
您的应用程序类:
public class MyApplication extends Application
{
...
private static final class MyActivityLifeCycleCallback implements ActivityLifecycleCallbacks
{
@Override
public void onActivityStopped(Activity activity)
{
//Here, I am assuming that your class name is MainActivity
Log.i(TAG, "onActivityStopped:" + activity.getLocalClassName());
if("MainActivity".isEqual(activity.getLocalClassName())
{
myDataModel.getInstance().setPassword("");
//or if your password String member is static
//((MainActivity)activity).myPasswordMember = "";
}
//Or if you want to only clear the password text when RAActivity stops, simply replace "MainActivity" with the RAActivity class name.
}
@Override
public void onActivityDestroyed(Activity activity,
Bundle savedInstanceState)
{
Log.i(TAG, "onActivityDestroyed:" + activity.getLocalClassName());
if(activity.getLocalClassName().contains("MySecondActivity"))
{
//reset your password here - implementation will depend on how you have your data model organized (private, singleton, static, etc.)
}
}
....
}
请记住,这种设计可以很好地与某种类型的单例或中心数据模型(想想MVC体系结构)配合使用,这样您就可以将数据中的更改传播到组件中
希望能有帮助
编辑:
我已经根据你的评论添加了代码。但老实说,我认为最好像我建议的那样,在MainActivity的onStop函数中调用setText(“”)方法。这是一个简单的问题,我的第二个设计可能有点太多了。无论如何,代码已经更新,因此如果您喜欢,请将其标记为答案:)
还有一个想法。如果RAActivity使用startActivity再次调用MainActivity(可能不是),您只需将一个bundle值传递给MainActivity,告诉它它来自RAActivity。这样,如果从RAActivity调用,MainActivity可以清除密码。有很多选择。如果您的活动已不在内存中,则使用setText将不起作用,甚至可能引发某些类型的NPE。 根据您的要求,有几种方法可以做到这一点:
public void onStop()
{
super.onStop();
myTextField.setText("");
}
您的应用程序类:
public class MyApplication extends Application
{
...
private static final class MyActivityLifeCycleCallback implements ActivityLifecycleCallbacks
{
@Override
public void onActivityStopped(Activity activity)
{
//Here, I am assuming that your class name is MainActivity
Log.i(TAG, "onActivityStopped:" + activity.getLocalClassName());
if("MainActivity".isEqual(activity.getLocalClassName())
{
myDataModel.getInstance().setPassword("");
//or if your password String member is static
//((MainActivity)activity).myPasswordMember = "";
}
//Or if you want to only clear the password text when RAActivity stops, simply replace "MainActivity" with the RAActivity class name.
}
@Override
public void onActivityDestroyed(Activity activity,
Bundle savedInstanceState)
{
Log.i(TAG, "onActivityDestroyed:" + activity.getLocalClassName());
if(activity.getLocalClassName().contains("MySecondActivity"))
{
//reset your password here - implementation will depend on how you have your data model organized (private, singleton, static, etc.)
}
}
....
}
记住这个设计