¿Podría alguien ayudarme a crear una interfaz de escucha definida por el usuario con algunos fragmentos de código?¿Cómo crear nuestra propia interfaz de escucha en Android?
Respuesta
Crear interfaz de escucha.
public interface YourCustomListener
{
public void onCustomClick(View view);
// pass view as argument or whatever you want.
}
Y crear el método setOnCustomClick en otra actividad (o fragmento), en la que desea aplicar su escucha personalizado ......
public void setCustomClickListener(YourCustomListener yourCustomListener)
{
this.yourCustomListener= yourCustomListener;
}
llamar a este método desde su primera actividad, y pase la interfaz de escucha ...
por favor leer observer pattern
interfaz de escucha
public interface OnEventListener {
void onEvent(EventResult er);
// or void onEvent(); as per your need
}
entonces en su clase decir Event
clase
public class Event {
private OnEventListener mOnEventListener;
public void setOnEventListener(OnEventListener listener) {
mOnEventListener = listener;
}
public void doEvent() {
/*
* code code code
*/
// and in the end
if (mOnEventListener != null)
mOnEventListener.onEvent(eventResult); // event result object :)
}
}
en su clase del controlador MyTestDriver
public class MyTestDriver {
public static void main(String[] args) {
Event e = new Event();
e.setOnEventListener(new OnEventListener() {
public void onEvent(EventResult er) {
// do your work.
}
});
e.doEvent();
}
}
public interface MyListener {
// you can define any parameter as per your requirement
public void callback(View view, String result);
}
public class MyActivity extends Activity implements MyListener {
@override
public void onCreate(){
MyButton m = new MyButton(this);
}
// method is invoked when MyButton is clicked
@override
public void callback(View view, String result) {
// do your stuff here
}
}
public class MyButton {
MyListener ml;
// constructor
MyButton(MyListener ml) {
//Setting the listener
this.ml = ml;
}
public void MyLogicToIntimateOthers() {
//Invoke the interface
ml.callback(this, "success");
}
}
En Android, puede crear una interfaz como oyente, y sus implementos de Actividad eso, pero no creo que sea una buena idea. si tenemos muchos componentes para escuchar los cambios de su estado, podemos crear un BaseListener implementa el Oyente de interfaz, y usar un código de tipo para manejarlos. podemos enlazar el método cuando creamos archivo XML, por ejemplo:
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button4"
android:onClick="Btn4OnClick" />
y el código fuente:
public void Btn4OnClick(View view) {
String strTmp = "点击Button04";
tv.setText(strTmp);
}
pero no creo que es una buena idea ...
He creado un Escuchador AsyncTask genérico que obtiene el resultado de la clase separada AsycTask y se lo asigna a CallingActivity utilizando la devolución de llamada de interfaz.
new GenericAsyncTask(context,new AsyncTaskCompleteListener()
{
public void onTaskComplete(String response)
{
// do your work.
}
}).execute();
interfaz
interface AsyncTaskCompleteListener<T> {
public void onTaskComplete(T result);
}
GenericAsyncTask
class GenericAsyncTask extends AsyncTask<String, Void, String>
{
private AsyncTaskCompleteListener<String> callback;
public A(Context context, AsyncTaskCompleteListener<String> cb) {
this.context = context;
this.callback = cb;
}
protected void onPostExecute(String result) {
finalResult = result;
callback.onTaskComplete(result);
}
}
Tenga una mirada en this, this question para más detalles.
Método simple para hacer este enfoque. Primero implementa el OnClickListeners
en su clase de actividad.
Código:
class MainActivity extends Activity implements OnClickListeners{
protected void OnCreate(Bundle bundle)
{
super.onCreate(bundle);
setContentView(R.layout.activity_main.xml);
Button b1=(Button)findViewById(R.id.sipsi);
Button b2=(Button)findViewById(R.id.pipsi);
b1.SetOnClickListener(this);
b2.SetOnClickListener(this);
}
public void OnClick(View V)
{
int i=v.getId();
switch(i)
{
case R.id.sipsi:
{
//you can do anything from this button
break;
}
case R.id.pipsi:
{
//you can do anything from this button
break;
}
}
}
Hay 4 pasos:
clase de interfaz 1.Create (oyente) interfaz
2.use en vista 1 (definir variable)
interfaz 3.implements para ver 2 (vista 1 utilizada en la vista 2)
interfaz4.pass en vista 1 para ver 2
Ejemplo:
Paso 1: se necesita crear interfaz y la función definde
public interface onAddTextViewCustomListener {
void onAddText(String text);
}
Paso 2: utilizar esta interfaz en ver
public class CTextView extends TextView {
onAddTextViewCustomListener onAddTextViewCustomListener; //listener custom
public CTextView(Context context, onAddTextViewCustomListener onAddTextViewCustomListener) {
super(context);
this.onAddTextViewCustomListener = onAddTextViewCustomListener;
init(context, null);
}
public CTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context, attrs);
}
public void init(Context context, @Nullable AttributeSet attrs) {
if (isInEditMode())
return;
//call listener
onAddTextViewCustomListener.onAddText("this TextView added");
}
}
Paso 3,4: implementa a la actividad
- 1. ¿Cómo escribir nuestra propia interfaz de marcador en Java?
- 2. Scapy SYN enviar en nuestra propia dirección IP
- 3. Bibliotecas de gráficos web para dispositivos móviles, nuestra propia investigación
- 4. android cómo crear mi propia actividad y ampliarla?
- 5. Haga nuestra propia lista <string, string, string>
- 6. ¿Cómo poner nuestra propia declaración de función en la biblioteca iostream en C++?
- 7. Cómo crear propia máscara en ios
- 8. Cómo crear mi propia clase de Preferencia
- 9. ¿Cómo crear una extensión de dominio propia?
- 10. ¿Cómo puedo crear mi propia UITabBar?
- 11. ¿Cómo crear una función propia de jQuery en JavaScript?
- 12. Ejecutar escucha de GPS en segundo plano en Android
- 13. Cómo abrir la Configuración del teléfono Android en un botón haga clic en nuestra aplicación Android
- 14. ¿Cómo crear un múltiplo de la propia mesa de
- 15. Escucha de evento personalizado en la aplicación de Android
- 16. ¿Cómo crear mi propia biblioteca de Java (API)?
- 17. Android cuánto tiempo estará nuestra actividad allí en la pila
- 18. Cómo crear su propia aplicación móvil Magento para Android y iPhone
- 19. Escribir mi propia interfaz 'todo es un archivo'
- 20. Crear tipo que implementa la interfaz interna
- 21. Cómo agregar escucha de acción que escucha varios botones
- 22. Crear mi propia extensión de archivo basada en plist
- 23. ¿Es posible crear mi propia 'variable automática'?
- 24. Cómo crear mi propia API web/Servicio web
- 25. ¿Cómo se escucha en múltiples direcciones IP?
- 26. Cómo eliminar su propia aplicación del mercado de Android
- 27. ¿Cómo compilo mi propia biblioteca C++ para Android?
- 28. ¿Cómo probamos nuestra UI de Java?
- 29. ¿Escucha de cambio de volumen?
- 30. Crear XmlRpcUrl interfaz en tiempo de ejecución
Cómo pasar el objeto de escucha si nuestro botón ya está en el diseño en lugar de utilizar el MyButton m = new MyButton (esto); forma de crear el objeto de Button. –
Puede agregar un nuevo método en la clase MyButton: void setMyListener (MyListner m1) {this.ml = m1;} y luego use este método en cualquier momento para configurar su objeto detector. –
donde se usa MyLogicToIntimateOthere() este método? – abh22ishek