繁体   English   中英

如何重新启动相同的活动?

[英]How to restart same Activity?

如果我有10个EditText并且用户仅输入5个,则我单击onBackPressed按钮退出我的应用程序而没有提交正在输入的EditText数据,然后当我重新启动我的应用程序时我想在启动时进行相同的活动。感谢appriceat 。

public class Registration_Form extends Activity {
EditText et_CompanyName;
EditText et_EmployeeName;
EditText et_CompanyWebsite;
EditText et_ContactNumber;
EditText et_Email_Id;

Button btnSubmit;
DatabaseHelper databaseHelper;
SQLiteDatabase db;

 RadioGroup radioGroup_FinancialYaer;
 RadioButton radioButton_FinancialYaer; 
 String strFinancialYear;
 String appWidgetId = null;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.registration_details);

    SharedPreferences prefs =  PreferenceManager.getDefaultSharedPreferences(this);
    final SharedPreferences.Editor edit = prefs.edit();
    boolean alldataSaved=prefs.getBoolean("SecondRun",false);

    et_CompanyName = (EditText) findViewById(R.id.editText_CompanyName);
    et_EmployeeName = (EditText) findViewById(R.id.editText_EmployeeName);
    et_CompanyWebsite = (EditText) findViewById(R.id.editText_CompanyWebSite);
    et_ContactNumber = (EditText) findViewById(R.id.editText_ConatctNo);
    et_Email_Id = (EditText) findViewById(R.id.editText_EmailId);



    et_CompanyName.setOnFocusChangeListener(new OnFocusChangeListener() {          

        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus)
            {
                edit.putString("Company_Name"+appWidgetId,et_CompanyName.getText().toString());
                edit.commit();
            }
        }
    });


    et_EmployeeName.setOnFocusChangeListener(new OnFocusChangeListener() {          

        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus)
            {
                edit.putString("Employee_Name"+appWidgetId,et_EmployeeName.getText().toString());
                edit.commit();
            }
        }
    });



    et_CompanyWebsite.setOnFocusChangeListener(new OnFocusChangeListener() {          

        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus)
            {
                edit.putString("Company_Website"+appWidgetId,et_CompanyWebsite.getText().toString());
                edit.commit();
            }
        }
    });


    et_ContactNumber.setOnFocusChangeListener(new OnFocusChangeListener() {          

        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus)
            {
                edit.putString("Contact_Number"+appWidgetId,et_ContactNumber.getText().toString());
                edit.commit();
            }
        }
    });



    et_Email_Id.setOnFocusChangeListener(new OnFocusChangeListener() {          

        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus)
            {
                edit.putString("Email_Id"+appWidgetId,et_Email_Id.getText().toString());
                edit.commit();
            }
        }
    });






      SharedPreferences settings=getSharedPreferences("prefs",0); 
      boolean firstRun=settings.getBoolean("firstRun",false);

      if(firstRun==false)//if running for first time 

      {
          SharedPreferences.Editor editor=settings.edit();
          editor.putBoolean("firstRun",true); 
          editor.commit();
          //execute your code for first time
      } 

      else 
      { 
          if(alldataSaved == false)
          {
              SharedPreferences.Editor editor=prefs.edit();
              editor.putBoolean("SecondRun",true); 
              editor.commit();
              Log.e("Second"," Steps !!!!");
          }
          else
          {
              Intent iSubmit = new Intent(Registration_Form.this,Employee_List.class);
              startActivity(iSubmit);
              finish();
              //Default Activity startActivity(a); 
          }

      }

    databaseHelper = new DatabaseHelper(this);
    databaseHelper.onOpen(db);


    radioGroup_FinancialYaer = (RadioGroup)findViewById(R.id.radioGroupFinanncialYear);


    btnSubmit = (Button) findViewById(R.id.buttonSubmit);
    btnSubmit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            final String stringEmail_Id = et_Email_Id.getText().toString()
                    .trim();

            final String stringCompanyWebsite = et_CompanyWebsite.getText()
                    .toString().trim();

            if ((et_CompanyName.getText().toString().isEmpty()))
            {
                et_CompanyName.setError("Field Can Not Be Empty !");
            }

            else if (!et_CompanyName.getText().toString().trim()
                    .matches("[a-zA-Z ]+"))
            {
                et_CompanyName.setError("Accept Alphabets Only.");
            }

            else if ((et_EmployeeName.getText().toString().isEmpty()))
            {
                et_EmployeeName.setError("Field Can Not Be Empty !");
            }

            else if (!et_EmployeeName.getText().toString().trim()
                    .matches("[a-zA-Z ]+"))
            {
                et_EmployeeName.setError("Accept Alphabets Only.");
            }

            else if ((et_CompanyWebsite.getText().toString().isEmpty()))
            {
                et_CompanyWebsite.setError("Field Can Not Be Empty !");
            }

            else if (!isValidUrl(stringCompanyWebsite))
            {
                et_CompanyWebsite.setError("Invalid URL");
            }

            else if ((et_ContactNumber.getText().toString().isEmpty()))
            {
                et_ContactNumber.setError("Field Can Not Be Empty !");
            }

            else if (!isValidEmail(stringEmail_Id))
            {
                et_Email_Id.setError("Invalid Email");
            }

            else

            {
                String stringCompanyName = et_CompanyName.getText()
                        .toString().trim();
                String stringContactNumber = et_ContactNumber.getText()
                        .toString().trim();
                String stringEmployeeName = et_EmployeeName.getText()
                        .toString().trim();


                int selectedId = radioGroup_FinancialYaer.getCheckedRadioButtonId();
                Log.e("selectedId "," = " + selectedId);
                radioButton_FinancialYaer = (RadioButton) findViewById(selectedId);
                strFinancialYear = radioButton_FinancialYaer.getText().toString().trim();
                Log.e("strRadioButton "," = " + strFinancialYear);


                databaseHelper.insertRegstrationDetails(stringCompanyName,
                        stringEmployeeName, stringCompanyWebsite,
                        stringContactNumber, stringEmail_Id, strFinancialYear);
                System.out.println("Data Inserted Successfully !!! ");

                Intent iSubmit = new Intent(Registration_Form.this,Staff_Employee_Details.class);
                startActivity(iSubmit);
                finish();
            }

        }
    });
}

您可以为此使用sharedPreference。 您可以将每个Edittext的值保存在一个sharedprefrerece中(为每个edittext使用唯一键,并在更改焦点时设置值。请参见示例:)

EditText txtEdit= (EditText) findViewById(R.id.edittxt);

 txtEdit.setOnFocusChangeListener(new OnFocusChangeListener() {          

    public void onFocusChange(View v, boolean hasFocus) {
        if(!hasFocus)
           //do job here when Edittext lose focus 
          //means save value here
    }
});

并在创建时加载这些保存的值。 希望你从中得到一些想法

编辑:这是根据您的条件

if(firstRun==false)//if running for first time 

      {
          SharedPreferences.Editor editor=settings.edit();
          editor.putBoolean("firstRun",true); 
          editor.commit();
          //execute your code for first time
      } 

      else 
      {     
 if(alldataSaved==false)
  {
         //stay in this activiy

   }
  else
{
 Intent iSubmit = new Intent(Registration_Form.this,Employee_List.class);
          startActivity(iSubmit);
          finish();
          //Default Activity startActivity(a); 
   }
   }

你可以简单地使用这个

Intent intent = getIntent();
finish();
startActivity(intent);

我希望那是工作

这不是Android的工作方式。 您不能以这种方式“恢复”相同的活动。 但是,您可以做的是保存EditText内容,例如在onPause()或onStop()函数中,将EditTexts的内容保存为字符串,将它们放入列表中,然后将该列表序列化为文件。 在onResume()或onStart()方法中,从文件中反序列化此数据。

此处显示了此类序列化的示例,但我还将在此处粘贴: 将对象放入包中

连载:

private List<String> list = new ArrayList<String>();

@Override
public void onPause()
{
    super.onPause();
    FileOutputStream out = null;
    try
    {
        out = openFileOutput("ModelBackup",Context.MODE_PRIVATE);

        try
        {
            ObjectOutputStream oos = new ObjectOutputStream(out);
            oos.writeObject(list);
        }
        catch(IOException e)
        {
            Log.d(this.getClass().toString(), e.getMessage());
        }
    }
    catch(FileNotFoundException e)
    {
        Log.d(this.getClass().toString(), e.getMessage());
    }
    finally
    {
        try
        {
            if(out != null) out.close();
        }
        catch(IOException e)
        {
            Log.d(this.getClass().toString(), e.getMessage());
        }
    }
} 

反序列化:

@Override
public void onResume()
{
    super.onResume();
    FileInputStream in = null;
    try
    {
        in = openFileInput("ModelBackup");
        ObjectInputStream oos = new ObjectInputStream(in);
        try
        {
            list = (List<String>)oos.readObject();
        }
        catch(ClassNotFoundException e)
        {
            list = null;
        }
    }
    catch(IOException e)
    {
        Log.d(this.getClass().toString(), e.getMessage());
    }
    finally
    {
        try
        {
            if(in != null) in.close();
        }
        catch(IOException e) {}
    }
}

如果从片段重新开始活动,我会这样做:

new Handler().post(new Runnable() {

         @Override
         public void run()
         {
            Intent intent = getActivity().getIntent();
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
            getActivity().overridePendingTransition(0, 0);
            getActivity().finish();

            getActivity().overridePendingTransition(0, 0);
            startActivity(intent);
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM