В моем приложении у меня есть счетчик, который пользователь заполняет телефонными номерами.
У пользователя есть 3 варианта: Добавить - Изменить - Удалить. Для отображения параметров я использовал popupMenu
.
Итак, вначале, когда счетчик пуст, параметры Редактировать и Удалить включены (определены в файле xml), но после добавления элемента в счетчик мне нужны включенные параметры. быть доступными, чтобы пользователь мог их выбрать.
Я попробовал код, который нашел здесь, но он не работает.
Ниже мой полный код. Спасибо!!!
MainActivity.java
public class EachApartInList extends ActionBarActivity implements OnMenuItemClickListener{
Spinner spinner;
ArrayAdapter<String> adapter;
Menu popupMenu;
PopupMenu popup;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.each_apart_in_list);
spinner =(Spinner)findViewById(R.id.spinner1);
adapter = new ArrayAdapter<String>(
getBaseContext(), android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
public void ShowMenu(View v){
PopupMenu popup = new PopupMenu(this, v);
// This activity implements OnMenuItemClickListener
popup.setOnMenuItemClickListener(this);
popup.inflate(R.menu.spinner_action);
popup.show();
}
@Override
public boolean onMenuItemClick(MenuItem arg0) {
int id;
switch(id = arg0.getItemId()){
case R.id.menu_add:
showAlertDialog();
break;
case R.id.menu_edit:
break;
case R.id.menu_delete:
break;
}
// TODO Auto-generated method stub
return false;
}
void showAlertDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final EditText phoneNum = new EditText(this);
phoneNum.setInputType(InputType.TYPE_CLASS_PHONE);
builder.setView(phoneNum)
.setTitle("Add number")
.setMessage("Enter the number here :");
// Set up the buttons
builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String newPhoneNum = phoneNum.getText().toString();
adapter.add(newPhoneNum);
adapter.notifyDataSetChanged();
popupMenu.findItem(R.id.menu_edit).setEnabled(true);
popupMenu.findItem(R.id.menu_delete).setEnabled(true);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
spinner_action.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_add"
android:icon="@drawable/app_icon"
android:title="add"/>
<item
android:id="@+id/menu_edit"
android:enabled="false"
android:title="edit"/>
<item
android:id="@+id/menu_delete"
android:enabled="false"
android:title="delete"/>
</menu>