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 }); } 

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.