【问题标题】:how to use Shared Prefrences如何使用共享首选项
【发布时间】:2014-08-17 00:14:54
【问题描述】:

我想知道如何使用共享首选项.... 我的问题是我正在使用共享偏好...我没有填写编辑文本 我的 If 条件不起作用......当我按下而不填写编辑文本时......光标转到下一个活动 我的如果条件不起作用 我的调试器显示没有值不是空的..如果我正在填充信息调试器显示我输入的值

这是我的代码

public class SignupE extends Activity {
SharedPreferences pref;
Context context;
Editor editor;
Button nexttoFinish;
EditText fulname,username,Datofbirth,Email,Password;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.signupe);
    pref=getApplicationContext().getSharedPreferences("Mydata",
            Context.MODE_PRIVATE);

     nexttoFinish=(Button)findViewById(R.id.nexttofinish);
     fulname=(EditText)findViewById(R.id.fulname);
     username=(EditText)findViewById(R.id.user_name);
     Datofbirth=(EditText)findViewById(R.id.dateofbrth);
     Email=(EditText)findViewById(R.id.email_user);
     Password=(EditText)findViewById(R.id.pwd_user);
    nexttoFinish=(Button)findViewById(R.id.nexttofinish);




    nexttoFinish.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            // TODO Auto-generated method stub
            String Fullname=fulname.getText().toString();
            String Username=username.getText().toString();
            String DateofBirth=Datofbirth.getText().toString();
            String E_Mail=Email.getText().toString();
            String PassWord=Password.getText().toString();
            if(fulname.equals(""))
            {
                Toast.makeText(SignupE.this,"Please Your Full Name", Toast.LENGTH_SHORT).show();
                return;
            }
            if(username.equals(""))
            {
                Toast.makeText(SignupE.this,"Please Enter Your User Name To Display", Toast.LENGTH_SHORT).show();
                return;
            }if(Datofbirth.equals(""))
            {
                Toast.makeText(SignupE.this,"Please Enter Your Date Of Birth", Toast.LENGTH_SHORT).show();
                return;
            }

            if(Email.equals(""))
            {
                Toast.makeText(SignupE.this,"Please Enter Email", Toast.LENGTH_SHORT).show();
                return;
            }

             if(Password.equals(""))
            {               
                Toast.makeText(SignupE.this,"Please Enter Strong password", Toast.LENGTH_SHORT).show();
                return;
            }

            editor=pref.edit();
            editor.putString("FullName", Fullname);
            editor.putString("UserName", Username);
            editor.putString("DatOfBirth", DateofBirth);
            editor.putString("Email", E_Mail);
            editor.putString("PassWord", PassWord);
            editor.commit();
            Intent F=new Intent(getApplicationContext(),SignUp.class);
            startActivity(F);


        }
    });
}

  }

【问题讨论】:

  • 请粘贴其他活动代码
  • 我的问题是...看看如果(fulname.equals("")) { Toast.makeText(SignupE.this,"请您的全名", Toast.LENGTH_SHORT).show() ;返回; } 如果我不填充光标就不会进去
  • 没有人能理解你的意思。抱歉,但请尝试改进您的问题并用可读的英语准确解释。
  • 您在if 条件句中混淆了字符串和编辑文本。 if(fulname.equals("")) 应该是 if(Fullname.equals(""); 等。

标签: android sharedpreferences


【解决方案1】:

像这样改变你的代码

 .................................

if(Fullname.equals(""))
            {               
                Toast.makeText(SignupE.this,"Please Enter Strong password", Toast.LENGTH_SHORT).show();
                return;
            }
else{
            editor=pref.edit();
            editor.putString("FullName", Fullname);
            editor.putString("UserName", Username);
            editor.putString("DatOfBirth", DateofBirth);
            editor.putString("Email", E_Mail);
            editor.putString("PassWord", PassWord);
            editor.commit();
            Intent F=new Intent(getApplicationContext(),SignUp.class);
            startActivity(F);
}

【讨论】:

    【解决方案2】:

    您在此代码中发生了很多变量混淆,例如在您的所有 if 条件中,您在 edittext 上使用 equals() 方法,这永远不会是真的,因此不会显示任何 toast。

    将所有 if 条件更改为以下,它应该可以工作。

    String Fullname=fulname.getText().toString();
            String Username=username.getText().toString();
            String DateofBirth=Datofbirth.getText().toString();
            String E_Mail=Email.getText().toString();
            String PassWord=Password.getText().toString();
            if(fulname.equals(""))
            {
                Toast.makeText(SignupE.this,"Please Your Full Name", Toast.LENGTH_SHORT).show();
                return;
            }
            //In all your If condition you either need to check the values from your Strings
            //or you can directly use getText().toString().equals("") method on each of your edittext
            if(Username.equals(""))  //change in this line
            {
                Toast.makeText(SignupE.this,"Please Enter Your User Name To Display", Toast.LENGTH_SHORT).show();
                return;
            } else if(DatofBirth.equals("")) //change in this line
            {
                Toast.makeText(SignupE.this,"Please Enter Your Date Of Birth", Toast.LENGTH_SHORT).show();
                return;
            }
    
            else if(E_mail.equals(""))   //change in this line
            {
                Toast.makeText(SignupE.this,"Please Enter Email", Toast.LENGTH_SHORT).show();
                return;
            }
    
             else if(PassWord.equals(""))   //change in this line
            {               
                Toast.makeText(SignupE.this,"Please Enter Strong password", Toast.LENGTH_SHORT).show();
                return;
            }
    

    这应该可以解决您的 toast 未显示问题,但是此代码仍将继续执行并使用所有 sharedpreferences 空字符串及其键进入下一个活动。如果您想在所有编辑文本都填满并开始新意图后将此值添加到 sharedpreference 中,您应该只放置最后一个 else 块并将代码移入其中,如下所示,

            //This block will only be executed if all edittexts are filled with something
            else {   //put the else block after your last if condition
            editor=pref.edit();
            editor.putString("FullName", Fullname);
            editor.putString("UserName", Username);
            editor.putString("DatOfBirth", DateofBirth);
            editor.putString("Email", E_Mail);
            editor.putString("PassWord", PassWord);
            editor.commit();
            Intent F=new Intent(getApplicationContext(),SignUp.class);
            startActivity(F); 
            }
    

    【讨论】:

      【解决方案3】:

      使用这个

       if(Fullname.matches(""))
                  {
                      Toast.makeText(SignupE.this,"Please Your Full Name", Toast.LENGTH_SHORT).show();
                      return;
                  }
      

      【讨论】:

      • thanx rohit u 解决我的问题
      【解决方案4】:

      试试这个..

      您与全名EditText 不等于全名String

              String Fullname=fulname.getText().toString();
              String Username=username.getText().toString();
              String DateofBirth=Datofbirth.getText().toString();
              String E_Mail=Email.getText().toString();
              String PassWord=Password.getText().toString();
              if(Fullname.equals(""))
              {
                  Toast.makeText(SignupE.this,"Please Your Full Name", Toast.LENGTH_SHORT).show();
                  return;
              }else if(Username.equals(""))
              {
                  Toast.makeText(SignupE.this,"Please Enter Your User Name To Display", Toast.LENGTH_SHORT).show();
                  return;
              }else if(DateofBirth.equals(""))
              {
                  Toast.makeText(SignupE.this,"Please Enter Your Date Of Birth", Toast.LENGTH_SHORT).show();
                  return;
              }else if(E_Mail.equals(""))
              {
                  Toast.makeText(SignupE.this,"Please Enter Email", Toast.LENGTH_SHORT).show();
                  return;
              }else if(PassWord.equals(""))
              {               
                  Toast.makeText(SignupE.this,"Please Enter Strong password", Toast.LENGTH_SHORT).show();
                  return;
              }else{
      
                  editor=pref.edit();
              editor.putString("FullName", Fullname);
              editor.putString("UserName", Username);
              editor.putString("DatOfBirth", DateofBirth);
              editor.putString("Email", E_Mail);
              editor.putString("PassWord", PassWord);
              editor.commit();
              Intent F=new Intent(getApplicationContext(),SignUp.class);
              startActivity(F);
              }
      

      【讨论】:

        【解决方案5】:

        我猜你想进行验证?如果用户填写所有文本视图,您可以禁用按钮并启用它,而不是按下按钮在这里试试这个:

        private class CheckTextifEmpty implements TextWatcher {
            @Override
            public void afterTextChanged(Editable s) {
            }
        
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }
        
            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                if (isEmptyCharacters(serverNumber)
                        || isEmptyCharacters(textview1)
                        || isEmptyCharacters(textview2)
                        || isEmptyCharacters(textview3)) {
                    //do something here
                                   nexttoFinish.setEnabled(false);
                } else {
                    //do something here
                                   nexttoFinish.setEnabled(true);
                }
            }
        }
        
        
        
           private boolean isEmptyCharacters(TextView view){
               return view.getText().toString().trim().isEmpty();
        }
        

        像这样将它添加到您的所有文本视图中:

        fulname.addTextChangedListener(new CheckTextifEmpty());
        username.addTextChangedListener(new CheckTextifEmpty());
        

        【讨论】:

        • nexttoFinish.setEnabled(false);输入 ifcondition 给我错误...无法访问的代码
        • 我把它放在我的 If 条件中 ..And in else 我把 nexttoFinish.setEnabled(true);
        【解决方案6】:

        首先看看什么是共享偏好here,就你的问题而言,我刚刚了解到,当你给出一个空值并且你的警报不起作用时,你并不满意。

        尝试替换

        if(fulname.equals(""))
                    {
                        Toast.makeText(SignupE.this,"Please Your Full Name", Toast.LENGTH_SHORT).show();
                        return;
                    }
        

        if(fulname.contains(""))
                    {
                        Toast.makeText(SignupE.this,"Please Your Full Name", Toast.LENGTH_SHORT).show();
                        return;
                    }
        

         if (TextUtils.isEmpty(fulname)) {
                Toast.makeText(SignupE.this,"Please Your Full Name", Toast.LENGTH_SHORT).show();
                            cancel = true;
                        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多