Pregunta

He leído a través de las preguntas similares, pero no veo uno como este. Tengo una aplicación sencilla calculadora hay dos pestañas. Cada uno tiene su propia clase de actividad. Inicialmente escribí esto con un botón en la primera pantalla que onClick tomaría las entradas y pasarlos a la pantalla de resultados que hacer algún cálculo, y luego mostrar los resultados. Ahora quiero hacerlo con un TabHost. Tengo las dos pantallas de todo el conjunto, pero ni idea de cómo tomar las entradas y los pasa a la actividad de los resultados para hacer los cálculos y mostrar los valores resultantes.

Gracias de antemano Dean-O

¿Fue útil?

Solución

La forma más natural de hacer esto sería proporcionar su propia subclase de android.app.Application y lo utilizan para almacenar los datos compartidos. A continuación, la primera pestaña sería establecer los valores en la estructura de datos, y la segunda pestaña leería y utilizarlos para realizar cualquier cálculo que quería hacer. Ver aquí: cómo declarar variables globales en Android

Suponiendo que usted no desea tomar este enfoque y realmente desea utilizar extras intención de pasar los datos entre las actividades dentro de un TabHost, usted podría hacer algo como este truco en el que utiliza los TabHosts Intención (accede a través de getParent () .getIntent ()) para pasar de nuevo los datos de un lado a otro.

 public class Tab1 extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.tab_one);
  Button button = (Button) findViewById(R.id.btn);
  button.setOnClickListener(new OnClickListener(){
   @Override
   public void onClick(View v) {
    EditText x = (EditText) findViewById(R.id.x);
    EditText y = (EditText) findViewById(R.id.y);
    int a = Integer.parseInt(x.getText().toString());
    int b = Integer.parseInt(y.getText().toString());
    Intent i = getParent().getIntent();
    i.putExtra("a", a);
    i.putExtra("b", b);
    i.putExtra("tab", 1);
    TabActivity ta = (TabActivity) Tab1.this.getParent();
    ta.getTabHost().setCurrentTab(1);
   }
  });
 }
}


public class Tab2 extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  TextView result = new TextView(this);
  Intent i = getParent().getIntent();
  int a = i.getIntExtra("a", 0);
  int b = i.getIntExtra("b", 0);
  int sum = a + b;
  result.setText(Integer.toString(sum));
        setContentView(result);
 }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top