2016-11-23 6 views
1

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

enter image description here

@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)

http://pastebin.com/HEKcmVK3

+0

Was DialogFragment mit? Wenn Sie es verwenden, können Sie es von beiden Tasten aufrufen –

Antwort

0

Sie können eine Methode dieses Teils des Codes erstellen und dann rufen Sie einfach die Methode innerhalb des OnClickListener

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); 
    } 
} 
+0

Aber wie wäre es mit dem Dialog? – John

1

Sie müssen die Ansicht Methode tun schaffen es durch einen benutzerdefinierten Dialogklasse und schreiben. Und dann in beiden + und klicken Sie auf, erstellen Sie eine Instanz dieser Klasse und zeigen Sie es.

+0

überprüfen Sie meine Post wieder – John

Verwandte Themen