2016-06-11 1 views
-1

Je rencontre un problème avec findViewById(). Chaque fois que je l'utilise dans ce code, il me montre une erreur. Parfois studio Android me suggère de faire comme ça TextView DateView = null; etImpossible de travailler avec findViewById

DateView = (TextView)DateView.findViewById(R.id.DateView); 

mais qui donne aussi une erreur. Quelqu'un peut-il m'aider à travailler avec ce code.

public class OperationFragment extends Fragment { 


    public OperationFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_operation, container, false); 
    } 

    public void onCreate (Bundle savedInstabceState){ 
     super.onCreate(savedInstabceState); 
     Calendar c = Calendar.getInstance(); 
     SimpleDateFormat dd = new SimpleDateFormat("dd-MM-yyyy"); 
     SimpleDateFormat dt = new SimpleDateFormat("HH:mm a"); 
     String formattedDate = dd.format(c.getTime()); 
     String formattedTime = dt.format(c.getTime()); 
     TextView DateView; 
     TextView TimeView; 
     System.out.println(formattedTime); 
     System.out.println(formattedDate); 
     DateView = (TextView)findViewById(R.id.DateView); 
     DateView.setText(formattedDate); 
     TimeView = (TextView)findViewById(R.id.TimeView); 
     TimeView.setText(formattedTime); 
    } 
} 
+0

Vous devez avoir accès à vos vues dans onCreateView() –

Répondre

2

Comme vous travaillez avec le fragment je suggère de le faire de cette façon:

intérieur onCreateView:

TextView TimeView; 
View rootView = inflater.inflate(R.layout.fragment_operation, container, false); 

TimeView = (TextView)rootView.findViewById(R.id.TimeView); 
TimeView.setText("Anik Rahman"); 
return rootView; 
+0

@AnikRahman Cela a-t-il fonctionné pour vous? –

+0

Non. Ça ne marche pas non plus pour moi. Cela me donne plusieurs erreurs. –

+1

@AnikRahman Avez-vous supprimé tout de onCreate comme il est appelé avant onCreateView? –

1

Il y a plusieurs problèmes ici. Le premier et le plus important est que onCreate() est appelé avant onCreateView() pour Fragements. Au lieu de cela, utilisez onViewCreated().

La seconde est qu'il n'y a pas de méthode findViewById() sur les fragments. Dans onViewCreated() vous avez un paramètre View cependant. Donc là, vous pouvez simplement utiliser view.findViewById() à la place.