Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: startActivityForResult & setResult para una clase de vista y una clase de actividad

Estoy confundido y no tengo idea de cómo usar startActivityResults y setResults para obtener datos de la actividad anterior. Tengo una clase view y una clase activity.

Básicamente, en mi clase de vista tengo este diálogo y en realidad se iniciará la clase de actividad llamada la clase colorActivity. Cuando el usuario selecciona yes también pasará el nombre del círculo seleccionado a la clase colorActivity. En la clase colorActivity, se permite a los usuarios introducir código de color para un círculo en particular y me gustaría pasar el código de color de nuevo a la clase view. Tengo problemas pasando valores de la actividad de nuevo a la visión usando el método startActivityForResult y setResult. Añadiendo, ¿cómo hacer uso de los datos obtenidos después de eso?

Mi código es el siguiente

Código Ontouchevent de mi clase de vista:

@Override public boolean onTouchEvent(MotionEvent event) { x = event.getX(); y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: for (int i = 0; i < circles.size(); i++) { if (circles.get(i).contains(x, y)) { circleID = i; Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { AlertDialog.Builder builder = new Builder( getContext()); final EditText text = new EditText(getContext()); builder.setTitle("Adding colors to circles").setMessage( "Proceed to Enter color"); builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface di, int i) { Intent intent = new Intent( getContext(), colorActivity.class); intent.putExtra("circlename", circleNameList.get(circleID)); startActivityForResults(intent, 1); // error incurred here : The method startActivityForResult(Intent, int) is undefined for the type new DialogInterface.OnClickListener(){} } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface di, int i) { } }); builder.create().show(); } }, 3000); break; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { // Please, use a final int instead of hardcoded // int value if (resultCode == RESULT_OK) { ccode = (String) data.getExtras().getString("colorcode"); } } } public static String getColorCode() { return ccode; } 

En el colorActivity:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_ecolor); circlenametextview = (TextView)findViewById(R.id.circlenametextview); String circlename = super.getIntent().getStringExtra("circlename"); circlenametextview.setText(circlename);//get the circle name savebutton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(colorActivity.this, ?????);//how to return back to the view class? colorcode = colorEditText.getText().toString();// I am able to get value right up till this point Intent resultIntent = new Intent(); resultIntent.putExtra("colorcode", colorcode ); setResult(Activity.RESULT_OK, resultIntent); finish(); }// onclick }); } 

  • Android lanza la intención de Twitter
  • Android: la bandera de tareas no funciona para PendingIntent
  • Cambio de posición del cuadro de diálogo en la pantalla de Android
  • ACTION_INSTALL_PACKAGE
  • Android AlarmManager problema con la configuración y restablecimiento de una alarma
  • Selecciona el contacto directamente desde el selector de contactos
  • Android enviar SMS automáticamente al hacer clic en el botón
  • ¿Cómo obtener el tamaño de los datos recibidos a través de EXTRA_STREAM en una aplicación que maneja la acción enviar intención?
  • 2 Solutions collect form web for “Android: startActivityForResult & setResult para una clase de vista y una clase de actividad”

    Después de corregir el otro código para que pueda ejecutar el programa, puede recuperar los parámetros de su actividad colorActivity de esta manera:

    Paso1: devolver algún valor de colorActivity

     Intent resultIntent = new Intent(); resultIntent.putExtra("NAME OF THE PARAMETER", valueOfParameter); ... setResult(Activity.RESULT_OK, resultIntent); finish(); 

    Paso 2: recopilar datos de la Actividad Principal

    Anulación de @onActivityResult(...) .

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { // Please, use a final int instead of hardcoded int value if (resultCode == RESULT_OK) { String value = (String) data.getExtras().getString("NAME OF THE PARAMETER"); 

    Referencias

    Intenta usar

     ActivityName.this.startActivityForResult(intent,int) 

    Oh, y 1 pequeña cosa, en el código que ha utilizado

    StartActivityForResults (intento, int) … reemplazar eso con

    StartActivityForResult (intento, int)

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.