Aktivieren / Deaktivieren des ActionBar-Menüelements
Ich habe actionbar menuitems abbrechen und speichern lassen.
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/saveButton"
android:showAsAction="always"
android:title="@string/save"
android:visible="true">
</item>
<item android:id="@+id/cancelButton"
android:showAsAction="always"
android:title="@string/cancel"
android:visible="true">
</item>
</menu>
Ich möchte das Speichern von Menüs deaktivieren, wenn die Aktivität gestartet wird.
Mein Aktivitätscode -
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.add_project);
EditText projectName = (EditText) findViewById(R.id.editTextProjectName);
projectName.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
configureSaveButton(s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {}
@Override
public void afterTextChanged(Editable s) {}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.addprojectmenu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item = (MenuItem) findViewById(R.id.saveButton);
item.setEnabled(false);
return super.onPrepareOptionsMenu(menu);
}
private void configureSaveButton(CharSequence s){
String text = null;
if(s != null){
text = s.toString();
}
if(text != null && text.trim().length() != 0){
}else{
}
}
Ich versuche hier also, zu Beginn der Aktivität den Menüpunkt Speichern zu deaktivieren. Wenn Editext Text enthält, sollte er aktiviert sein.
Ich bin nicht sicher, in was der Code sein sollte, wenn sonst in configureSaveButton-Methode. Wie kann ich das Speichern des Menüpunkts zunächst deaktivieren?
In onPrepareOptionsMenu wird eine Nullzeigerausnahme angezeigt.
Ich benutze Android 4.1