2017-10-14 5 views
1
public class SignUpSecondActivity extends AppCompatActivity { 
private LayoutInflater layoutInflater; 
private EditText txtFrom, txtTo; 
private Calendar calendar; 
private TimePickerDialog timepickerdialog; 
private int CalendarHour, CalendarMinute; 
private String format; 
private TextView txtClubTime; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sign_up_second); 
    Toolbar toolbar = findViewById(R.id.toolbar); 

    getTxtFromSunday().setOnClickListener(view -> getClubTiming(txtClubTime)); 
} 

private void getClubTiming(TextView txtClubTime) { 

    TextView txtClub = txtClubTime; 
    calendar = Calendar.getInstance(); 
    CalendarHour = calendar.get(Calendar.HOUR_OF_DAY); 
    CalendarMinute = calendar.get(Calendar.MINUTE); 
    timepickerdialog = new TimePickerDialog(this, 
      (view, hourOfDay, minute) -> { 
       if (hourOfDay == 0) { 
        hourOfDay += 12; 
        format = "am"; 
       } else if (hourOfDay == 12) { 
        format = "pm"; 
       } else if (hourOfDay > 12) { 
        hourOfDay -= 12; 
        format = "pm"; 
       } else { 
        format = "am"; 
       } 
       Log.i("@sandy","ClubTiming: "+txtClub); 
       if (txtClub!=null){ 
        txtClub.setText(String.format("%02d:%02d" + format, hourOfDay, minute)); 
        Log.i("@sandy","ClubTiming- "+txtClub); 

       } 

       Log.i("@sandy", "Time: " + String.format("%02d:%02d" + format, hourOfDay, minute)); 
      }, CalendarHour, CalendarMinute, false); 
    timepickerdialog.show(); 
} 




private TextView getTxtFromSunday() { 
    return (TextView) findViewById(R.id.txtFromSunday); 
} 

private TextView getTxtToSunday() { 
    return (TextView) findViewById(R.id.txtToSunday); 
} 

private TextView getTxtFromMonday() { 
    return (TextView) findViewById(R.id.txtFromMonday); 
} 

private TextView getTxtToMonday() { 
    return (TextView) findViewById(R.id.txtToMonday); 
} 


} 

Comme je viens à appeler cette méthode OnClickListener toujours pour attribuer la valeur TimePicker, mais me donner exception de pointeur nul l'exception est txtClub.setText(String.format("%02d:%02d" + format, hourOfDay, minute)); J'ai le problème dans la définition de la valeur pour TextView. S'il vous plaît Aidez-moi là .. Merci.Ceci est mon activité entière comme donnée ci-dessus ... comme suggéréJe veux écrire cette méthode une seule fois et l'appeler plusieurs fois pour l'attribution de la valeur pour divers TextView

+1

Montrez-moi le code où vous appelez ça? – Champandorid

+0

getTxtFromSunday(). SetOnClickListener (view -> getClubTiming (txtClubTime)); Je l'appelle de la même classe –

+1

où vous liez-vous textView? Il peut être utile si vous postez toute la classe d'activité – Champandorid

Répondre

0

Initialisation toutes les données dans la méthode initView

Essayez ceci dans votre code.

public class SignUpSecondActivity extends AppCompatActivity { 
private LayoutInflater layoutInflater; 
private EditText txtFrom, txtTo; 
private Calendar calendar; 
private TimePickerDialog timepickerdialog; 
private int CalendarHour, CalendarMinute; 
private String format; 
private TextView txtClubTime,txtFromSunday,txtToSunday,txtFromMonday,txtToMonday; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sign_up_second); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    initView(); 
    getTxtFromSunday().setOnClickListener(view -> getClubTiming(txtClubTime)); 
} 

private void initView() { 
    txtClubTime = (TextView) findViewById(R.id.txtClubTime); 
    txtFromSunday = (TextView) findViewById(R.id.txtFromSunday); 
    txtToSunday = (TextView) findViewById(R.id.txtToSunday); 
    txtFromMonday = (TextView) findViewById(R.id.txtFromMonday); 
    txtToMonday = (TextView) findViewById(R.id.txtToMonday); 
} 

private void getClubTiming(TextView txtClubTime) { 

    TextView txtClub = txtClubTime; 
    calendar = Calendar.getInstance(); 
    CalendarHour = calendar.get(Calendar.HOUR_OF_DAY); 
    CalendarMinute = calendar.get(Calendar.MINUTE); 
    timepickerdialog = new TimePickerDialog(this, 
      (view, hourOfDay, minute) -> { 
       if (hourOfDay == 0) { 
        hourOfDay += 12; 
        format = "am"; 
       } else if (hourOfDay == 12) { 
        format = "pm"; 
       } else if (hourOfDay > 12) { 
        hourOfDay -= 12; 
        format = "pm"; 
       } else { 
        format = "am"; 
       } 
       Log.i("@sandy","ClubTiming: "+txtClub); 
       if (txtClub!=null){ 
        txtClub.setText(String.format("%02d:%02d" + format, hourOfDay, minute)); 
        Log.i("@sandy","ClubTiming- "+txtClub); 
       } 

       Log.i("@sandy", "Time: " + String.format("%02d:%02d" + format, hourOfDay, minute)); 
      }, CalendarHour, CalendarMinute, false); 
    timepickerdialog.show(); 
} 

} 
+0

Fait avec ce code .... était utile –

+0

Vous pouvez accepter ma réponse. Merci. @ SandeepManmode – KeLiuyue

0

Obtenez les ID des textviews dans le oncreate de votre application, il ne fera pas de mal, Vous pouvez également attribuer le onclick auditeurs de 2 façons,

  1. implémentent auditeur onclick
  2. utilisation onclick dans xml

maintenant, créez votre méthode et l'appeler à AnyPoint vous voulez.

De l'activité:

yourMethod(); 

De Fragment:

((MainActivity)getActivity).yourMethod(); 
+0

mais j'étais bien avec cela, j'ai juste besoin d'écrire seulement une seule méthode pour passer la valeur –

0

Vous obtenez une erreur parce que vous n'avez pas affecté quoi que ce soit à votre txtClubTime, Changer votre code comme ceci et dites-moi ce que cela est utile ou non

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sign_up_second); 
     Toolbar toolbar = findViewById(R.id.toolbar); 
//Make a textView in xml and bind it . 
TextView txtClubTime=(TextView) findViewById(R.id.txtClubTime); 

     getTxtFromSunday().setOnClickListener(view -> getClubTiming(txtClubTime)); 
    } 

    private void getClubTiming(TextView txtClubTime) { 

     calendar = Calendar.getInstance(); 
     CalendarHour = calendar.get(Calendar.HOUR_OF_DAY); 
     CalendarMinute = calendar.get(Calendar.MINUTE); 
     timepickerdialog = new TimePickerDialog(this, 
       (view, hourOfDay, minute) -> { 
        if (hourOfDay == 0) { 
         hourOfDay += 12; 
         format = "am"; 
        } else if (hourOfDay == 12) { 
         format = "pm"; 
        } else if (hourOfDay > 12) { 
         hourOfDay -= 12; 
         format = "pm"; 
        } else { 
         format = "am"; 
        } 
        Log.i("@sandy","ClubTiming: "+txtClubTime); 
        if (txtClub!=null){ 
         txtClubTime.setText(String.format("%02d:%02d" + format, hourOfDay, minute)); 
         Log.i("@sandy","ClubTiming- "+txtClub); 

        } 

        Log.i("@sandy", "Time: " + String.format("%02d:%02d" + format, hourOfDay, minute)); 
       }, CalendarHour, CalendarMinute, false); 
     timepickerdialog.show(); 
    } 




    private TextView getTxtFromSunday() { 
     return (TextView) findViewById(R.id.txtFromSunday); 
    } 

    private TextView getTxtToSunday() { 
     return (TextView) findViewById(R.id.txtToSunday); 
    } 

    private TextView getTxtFromMonday() { 
     return (TextView) findViewById(R.id.txtFromMonday); 
    } 

    private TextView getTxtToMonday() { 
     return (TextView) findViewById(R.id.txtToMonday); 
    } 


    } 

Ajoutez simplement ceci comme insid e méthode:

this.txtClubTime=new TextView(this); 
+0

Je reçois la valeur pour Seulement seul TextView, Mais que faire si je veux l'assigner pour un autre TextView.J'ai au total 14 TextViews et je veux créer cette méthode une seule fois, mais ne peut pas lui affecter la valeur comme setText –

+0

Ok OK pour cela Vous devez créer un textView dynamique afin qu'il crée chaque fois que vous avez appelé la méthode – Champandorid

+0

toujours obtenir la valeur null .... s'il vous plaît aider me sortir –