Cómo pasar datos de la actividad principal a una clase de vista.
Estoy intentando pasar dos arrays diferentes a la clase BarActivity, pero es una clase View y no me permite utilizar Intent para pasar la información como pensé que podría hacerlo. ¿Hay alguna manera de que pueda pasar estos arrays a la actividad de barras para poder empezar a hacer el gráfico de barras?
Esta es la actividad principal.
public class MainActivity extends AppCompatActivity {
EditText editText;
ListView listView;
ListAdapter listAdapter;
Button btnCompute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=findViewById(R.id.edittext);
listView=findViewById(R.id.listView);
btnCompute=findViewById(R.id.btnCompute);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE)
{
try
{
if(editText.getText().toString().isEmpty())
{
listAdapter=null;
listView.setAdapter(null);
}
else
{
String[] arr =editText.getText().toString().split(",");
Intent i = new Intent(MainActivity.this,BarActivity.class);
i.putExtra("Grades", arr);
startActivity(i);
listAdapter=new ListAdapter(MainActivity.this,arr);
listView.setAdapter(listAdapter);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return true;
}
return false;
}
});
btnCompute.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(listAdapter!=null)
{
Integer [] list=listAdapter.getList();
Intent intent = new Intent(MainActivity.this,BarActivity.class);
intent.putExtra("Values", list);
startActivity(intent);
}
}
});
}
}
Y esta es la BarActivity.
public class BarActivity extends View {
//hash map
Map<string, float=””> data = new HashMap<>();
private float barWidth = 60f;
private float barSpace = 20f;
private Paint mPaint;
// Intent i = getIntent();
// String[] myGrades = i.getStringArrayExtra(“Grade”);
// Intent intent = Intent.getIntentOld();
// String[] myValues = intent.getStringArrayExtra(“Values”);
public BarActivity(Context context, AttributeSet attrs) throws URISyntaxException {
super(context, attrs);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
// mRandom = new Random();
data.put("A", 0.20f);
data.put("A-", 0.12f);
data.put("F", 0.1f);
}
@Override
protected void onDraw(Canvas canvas) {
}
}
La parte comentada // Intent i = getIntent()
no funciona en absoluto; me dice que use getIntentOld()
en su lugar, lo cual tampoco funciona.</string,>
davy.ai
Para pasar dos arrays diferentes a la clase BarActivity, puede crear un constructor en la clase BarActivity que tome dos arrays como argumentos. Luego, en la clase MainActivity, puede crear una instancia de la clase BarActivity utilizando el constructor y pasar los dos arrays como argumentos. Aquí hay un ejemplo:
En la clase BarActivity:
En la clase MainActivity:
En el código anterior, cuando el usuario ingresa calificaciones en el campo de EditText y hace clic en el botón “Calcular”, se muestra el BarActivity con el gráfico de barras de las calificaciones y sus valores correspondientes. Cuando el usuario ingresa un nuevo conjunto de calificaciones, se actualiza el ListView, y cuando el usuario hace clic en el botón “Calcular” nuevamente, el BarActivity se actualiza con los nuevos datos.</string,>