Pregunta cómo llamar al método en actividad desde la clase de no actividad


Tengo una clase de Actividad y no Actividad. Cómo llamar a un método en la clase de actividad de la clase no de actividad

public class MainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);

        DataClass dc = new DataClass();
        dc.show();                  
    }

    public void call(ArrayList<String> arr) {
       // Some code...
    }
}

public class DataClass {

    public void show(ArrayList<String> array) {
        // Here I want to send this ArrayList values into the call
        // method in activity class.

       MainActivity act = new MainActivity();
       act.call(array);                  
    }
}

7
2017-10-29 15:41


origen


Respuestas:


Solo crea una interfaz de devolución de llamada dentro de DateClass.

public DateClass {
    public interface IDateCallback {
        void call(ArrayList<String> arr);
    }  

    private IDateCallback callerActivity;

    public DateClass(Activity activity) {  
        callerActivity = (IDateCallback)activity;  
    }
...  
}  

public void show(ArrayList<String> array) {            
    callerActivity.Call(array);  
    ...  
}

//And implements it inside your activity.

public class MainActivity extends Activity 
        implements IDateCallback {  

    public void call(ArrayList<String> arr) {

    }  
}

14
2017-10-29 15:50



Bueno, hay varias cosas que podrías hacer. Creo que lo más fácil para ti sería enviar el Context dentro DataClass al igual que:

DataClass dc =new DataClass();
dc.show(this);

Y en tu DataClass guardar el contexto en una var global Context context. Entonces úsalo así:

((MainActivity)context).call(array);

6
2017-10-29 15:49



((MainActivity)getContext).array();

1
2017-10-08 09:00



Solo haga un singleton como:

TeacherDashboardSingleton:

public class TeacherDashboardSingleton {
public  Teacher_Dashboard aa;
private static final TeacherDashboardSingleton ourInstance = new TeacherDashboardSingleton();
   public static TeacherDashboardSingleton getInstance() {
        return ourInstance;
    }
}

Clase myActivity:

onCreate(....){
 ....
   TeacherDashboardSingleton.getInstance().aa = this;
....
}

esto creará un objeto de la misma instancia que en la actividad

ahora puedes usarlo desde cualquier lugar


0
2018-04-28 09:51



Preguntas populares