So ist dies meine Erinnerung App Screenshot, wie Sie sehen können, hat es eine Schaltfläche + und auch eine Schaltfläche. Wenn die + Taste geklickt wird, wird ein Dialog mit editText angezeigt.Wie Code wiederverwenden
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_task:
mClickedPosition = -1;
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = LayoutInflater.from(getActivity());
View promptView = getActivity().getLayoutInflater().inflate(R.layout.dialog_with_edittext, null);
Button cancel = (Button) promptView.findViewById(R.id.cancelBtn);
Button save = (Button) promptView.findViewById(R.id.okBtn);
task = (EditText) promptView.findViewById(R.id.task);
time = (EditText) promptView.findViewById(R.id.time);
date = (EditText) promptView.findViewById(R.id.date);
final AlertDialog alert = builder.create();
date.setOnClickListener(this);
time.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment fragDialog = getActivity().getSupportFragmentManager().findFragmentByTag("TimePicker");
if (fragDialog == null) { // Fragment not added
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
} else {
// already active
}
}
});
cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
alert.dismiss();
}
});
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String addTask = task.getText().toString();
String time1 = time.getText().toString();
String date1 = date.getText().toString();
if ((time1.trim().equals(""))|| (date1.trim().equals(""))|| (addTask.trim().equals(""))) {
Toast.makeText(getActivity(), " Not Completed", Toast.LENGTH_SHORT).show();
}
else {
if (adapter != null) {
if (mClickedPosition == -1) {
adapter.add(iD, addTask, time1, date1);
insertTask(addTask, time1, date1);
listview.setAdapter(adapter);
alert.dismiss();
check();
retrieveList(name);
}
}
Calendar alarm = Calendar.getInstance();
Calendar copy = (Calendar) alarm.clone();
alarm.set(Calendar.YEAR, year1);
alarm.set(Calendar.MONTH, month1);
alarm.set(Calendar.DAY_OF_MONTH, day1);
alarm.set(Calendar.HOUR_OF_DAY, hour1);
alarm.set(Calendar.MINUTE, min1);
int result = alarm.compareTo(copy);
if(result < 0) {
alarm.add(Calendar.DATE, 1);
}
else
{
Intent myIntent = new Intent(getActivity(), MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, alarm.getTimeInMillis(), pendingIntent);
}
}
}
});
alert.setView(promptView);
alert.show();
return true;
Wenn die Schaltfläche geklickt wird, wird es Dialog öffnen genau gleiche wie die + Taste. Meine Frage ist jetzt, gibt es eine Möglichkeit, wie ich den Code wiederverwenden kann, so wird der Code ein bisschen kürzer aussehen, oder ich muss den Code kopieren und in die Schaltfläche onClick
einfügen?
Zeigen Sie mir meinen vollständigen Code der Aktivität. Wie Sie sehen können, sind die meisten der Code das gleiche (+ Taste, Taste und auch der Listenansicht klicken)
Was DialogFragment mit? Wenn Sie es verwenden, können Sie es von beiden Tasten aufrufen –