2017-05-15 17 views
-1

我有一个简单的音符活动......从那里用户插入文本,可以节省或两个按钮加载它们......但我已经是问题... example如何设置Edittext是否为空。共享首选项不会存储?

我不知道如何防止不保存空的edittext,因为空的框仍然可以保存,覆盖保存的文本。然后用户将失去文本时,尝试加载旧文本..如果你需要的任何代码,请告诉我..

public static final String FILENAME="ShareDATA"; 
 
    public static final String KEYNAME="key"; 
 
    private SharedPreferences sharedpreference; 
 
    EditText edittext; 
 
    Button save,load; 
 
    TextView tv3, texf; 
 

 
    @Override 
 
    public void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_shared_preference); 
 

 
     texf = (TextView) findViewById(R.id.textView3); 
 
     texf.setTypeface(Typeface.createFromAsset(getAssets(), "rrabar.ttf")); 
 

 
     tv3 = (TextView) findViewById(R.id.textferk); 
 
     tv3.setTypeface(Typeface.createFromAsset(getAssets(), "rrabar.ttf")); 
 

 

 
     edittext=(EditText)findViewById(R.id.EditText01); 
 
     save=(Button)findViewById(R.id.Button01); 
 
     load=(Button)findViewById(R.id.Button02); 
 

 

 
     try{ 
 
      save.setOnClickListener(new OnClickListener() { 
 

 
       @Override 
 
       public void onClick(View v) { 
 

 
        sharedpreference=getSharedPreferences(FILENAME, MODE_PRIVATE); 
 
        Editor editor=sharedpreference.edit(); 
 
        editor.putString(KEYNAME, edittext.getText().toString()); 
 
        editor.apply(); 
 
        edittext.setText(""); 
 
       } 
 
      }); 
 
     } 
 
     catch (Throwable e) { 
 
      Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG); 
 
     } 
 

 
     try{ 
 

 
      load.setOnClickListener(new OnClickListener() { 
 

 
       @Override 
 
       public void onClick(View v) { 
 
        sharedpreference=getSharedPreferences(FILENAME, MODE_PRIVATE); 
 
        edittext.setText(sharedpreference.getString(KEYNAME, "نووسینی نیشانه‌كراو بوونی نییه‌.")); 
 

 
       } 
 
      }); 
 
     } 
 
     catch (Exception f) { 
 
      Toast.makeText(getApplicationContext(), f.toString(), Toast.LENGTH_LONG).show(); 
 

 
     } 
 

 
    }

非常感谢您的帮助

+0

edittext.getText()。的toString()。长度()0 – Pavya

+0

谢谢。我会尝试这一点,并让你知道:) – Khamkhor

+0

能否请您发布您的代码比较? – FAT

回答

0

只需添加一个检查你存储数据之前

... 
@Override 
public void onClick(View v) { 
    if (editText.getText().toString().trim().length() > 0) { 
     // store data 
    } 
    else { 
     // show error message or something 
    } 
} 
+0

非常感谢你的帮助我的朋友:) – Khamkhor

+0

嗯..你接受了20分钟后发布的答案,这基本上是相同的,但是在你发布代码后 – Denny

+0

抱歉,我的队友..我有你的观点,这是你的权利说..我是这个网站的新手,这就是为什么它发生了:) – Khamkhor

0

您可以设置在XML小号禁用Button为默认类似于android:enabled=false。之后,在EditText上输入TextChangeListener,并且如果文本长度大于零例如0,则启用Button

0

只检查简单的条件

 if (!editText.getText().toString().trim().equals("")) { 
     // store data 
    } else { 
     // show error message or something 
    } 
+0

非常感谢你的帮助我的朋友:) – Khamkhor

+0

@Khamkhor请接受我的答案。 –

+0

我喜欢接受它,但接受Denny的答案是正确的,因为他首先帮助但非常感谢你,并有一个美好的一天:) – Khamkhor

0

试试这个:

save.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       if (edittext.getText().toString().trim().length() > 0) { 

        sharedpreference = getSharedPreferences(FILENAME, MODE_PRIVATE); 
        Editor editor = sharedpreference.edit(); 
        editor.putString(KEYNAME, edittext.getText().toString()); 
        editor.apply(); 
       } else { 
        Toast.makeText(getApplicationContext(), "Please enter something...", Toast.LENGTH_SHORT).show(); 
       } 

       // Clear 
       edittext.setText(""); 
      } 
     }); 

String.trim()方法消除从 leadingtrailing空间串。返回一个string,其值为此字符串,其中任何前导和尾随whitespace已删除。

+0

非常感谢我的兄弟..它工作的很好: ) – Khamkhor

+0

非常欢迎:) – FAT

+0

对不起我的兄弟...我是新来这个网站和\t 我真的很喜欢接受你的答案,但接受丹尼的答案是正确的,因为他首先帮助但非常感谢,并且有一个美好的一天:) – Khamkhor