Come aggiornare un TextView di un'attività da un'altra class

Iam nuovo alla programmazione android / java. Ho due classi, una è un'attività e un'altra class normale. Nella mia class di attività contiene TextView. Posso aggiornare TextView della class di attività dalla class normale. Ho provato con codice random, ma non riesco. Fornire una soluzione …

// activity class public class MainMenu extends Activity { public TextView txtView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView txtView = (TextView)findViewById(R.id.text); } } // other class public class ClassB { public ClassB(){ } public void Update(){ TextView txtView = (TextView)findViewById(R.id.text); txtView.setText("Hello"); } } 

  • Android invia le richieste di posta a Django server csrf fallito
  • Android - edittext - sottolinea
  • Servizio: onTaskRemoved o onDestroy molto raramente viene chiamato a spegnere l'applicazione dalla list delle applicazioni recenti
  • Android: streaming della camera come mjpeg
  • Problemi con GridView all'interno di ScrollView in android
  • Vista di stile stile app appartenente alla nuova posta in Android con scorrimento a sinistra ea destra
  • android: copia ricorsiva con push adb
  • Perché AppCompat non support le funzioni correnti di temaActionBar: false
  • Elementi di scelta multifunction di Android AlertDialog con elementi personalizzati
  • Android: Scorrimento di un Imageview
  • Retrofit e OkHttpClient, timeout del collegamento di cattura nel metodo di fallimento
  • Come aggiornare i widget da un servizio?
  • 3 Solutions collect form web for “Come aggiornare un TextView di un'attività da un'altra class”

    Devi passare il riferimento Context tramite constructor.

     public class ClassB { Context context; public ClassB(Context context){ this.context=context; } public void Update(){ TextView txtView = (TextView) ((Activity)context).findViewById(R.id.text); txtView.setText("Hello"); } 

    I due precedenti esempi richiedono che TextView sia utilizzato direttamente nell'altra class. Tuttavia, ci sono casi in cui TextView non dovrebbe essere presente nell'altra class. ad esempio la class B è utilizzata per aggiornare varie attività, where alcune attività sono aggiornate su TextView, altri potrebbero essere su EditText.

    Quindi la soluzione in basso vi guida su come separare il tuo TextView da un'altra class, tuttavia potresti ancora get quello che vuoi. Sta utilizzando l'approccio Interface.

    Innanzitutto, dichiarare un'interface in cui potresti avere la class B a comunicare all'attività, chiamandola MyCallBack

     public interface MyCallBack { // Declaration of the template function for the interface public void UpdateMyText(String mystr); } 

    Successivamente nella tua attività, implementa MyCallBack e quindi è la definizione delle funzioni. In questa function ricevenetworking la string dalla class B, che potresti fare tutto ciò che ti piace, ad esempio aggiornare il TextView (o EditText ecc …)

     public Class MyActivity extends activity implements MyCallBack; { // ... whatever code of your activity @Overrid public void UpdateMyText(String mystr) { TextView txtView = (TextView)findViewById(R.id.text); txtView.setText(mystr); } } 

    Infine, puoi dichiarare ClassB che prende in MyCallBack (cioè l'object class di attività che è anche un MyCallBack). Da lì è ansible utilizzare ClassB per comunicare nuovamente a Attività e ottenerlo aggiornare è TextView tramite la function UpdateMyText

     public class ClassB { MyCallBack mCallBack = null; public ClassB(MyCallBack callBack){ this.mCallBack=callBack; } public void dosomething(){ // Do something to get String String myString = str; this.mCallBack.UpdateMyText(str); } 

    Speriamo che questo aiuta una migliore struttura architettata di disaccoppiamento della properties; Activity da ClassB.

    È ansible eseguire un metodo getter nella tua Activity .

    Nella tua class Activity :

     public TextView getTextView() { TextView txtView = (TextView)findViewById(R.id.text); return txtView; } 

    Nella class ClassB :

     public void Update() { MainMenu obj = new MainMenu(); TextView tv = obj.getTextView(); tv.setText("hello"); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.