package calculadora.de.bases;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Spinner;
import android.widget.ArrayAdapter;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.Toast;
import android.widget.TextView;
public class Calculadora extends Activity {
/** Called when the activity is first created. */
String datoSpinner = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner sp = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(
this, R.array.bases, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(adapter);
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView,
int position, long id) {
Toast.makeText(parentView.getContext(), "Has seleccionado Base " +
parentView.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
datoSpinner = parentView.getItemAtPosition(position).toString();
}
public void onNothingSelected(AdapterView<?> parentView) {
}
});
final TextView cajatexto = (TextView) findViewById(R.id.editText1);
final TextView cajaResultado = (TextView) findViewById(R.id.EditText01);
final Button buttonConvert = (Button) findViewById(R.id.button1);
buttonConvert.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
CharSequence datosCajaNumero;
int base = Integer.parseInt(datoSpinner);
datosCajaNumero = cajatexto.getText();
int numero = Integer.parseInt(datosCajaNumero.toString());
int temp = 0;
String[] resultado = new String[100];
int counter = 0;
while (numero != 0)
{
temp = (numero % base);
if (temp < 10)
{
resultado[counter] = "" + temp;
}
else
{
switch(temp) {
case 10:
resultado[counter] = "A";
break;
case 11:
resultado[counter] = "B";
break;
case 12:
resultado[counter] = "C";
break;
case 13:
resultado[counter] = "D";
break;
case 14:
resultado[counter] = "E";
break;
case 15:
resultado[counter] = "F";
break;
default:
resultado[counter] = "Z";
break;
}
}
counter ++;
}
String cadenaResultado = "";
for(int i = 0; i >= resultado.length; i++)
{
cadenaResultado = cadenaResultado + resultado[i];
}
cajaResultado.setText(cadenaResultado);
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" android:focusable="false" android:filterTouchesWhenObscured="true">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/LabelNumber"
android:textSize="25sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" >
<requestFocus />
</EditText>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/LabelBase"
android:textSize="25sp"
android:textStyle="bold" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button1"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="@string/stringButton"
android:textStyle="bold" android:textSize="20sp"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/LabelResult"
android:textSize="25sp"
android:textStyle="bold" />
<EditText
android:id="@+id/EditText01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" android:gravity="center"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="bases">
<item>2</item>
<item>6</item>
<item>8</item>
<item>10</item>
<item>16</item>
</string-array>
</resources>
E/AndroidRuntime( 4485): FATAL EXCEPTION: main
E/AndroidRuntime( 4485): java.lang.ArrayIndexOutOfBoundsException: length=100; index=100
E/AndroidRuntime( 4485): at calculadora.de.bases.Calculadora$2.onClick(Calculadora.java:68)
E/AndroidRuntime( 4485): at android.view.View.performClick(View.java:3480)
E/AndroidRuntime( 4485): at android.view.View$PerformClick.run(View.java:13983)
E/AndroidRuntime( 4485): at android.os.Handler.handleCallback(Handler.java:605)
E/AndroidRuntime( 4485): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 4485): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 4485): at android.app.ActivityThread.main(ActivityThread.java:4340)
E/AndroidRuntime( 4485): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 4485): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 4485): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime( 4485): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime( 4485): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 195): Force finishing activity calculadora.de.bases/.Calculadora
resultado[counter] = "" + temp;
numero = numero / base;
Dasten escribió:Ninjaedit: Ahora no peta, pero el boton no funciona, no me muestra nada en la ultima caja, le echare un ojo al Logcat, a ver que me dice...
String cadenaResultado = "";
for(int i = 0; i >= resultado.length; i++)
{
cadenaResultado = cadenaResultado + resultado[i];
}
cajaResultado.setText(cadenaResultado);
amuchamu escribió:Dasten escribió:Ninjaedit: Ahora no peta, pero el boton no funciona, no me muestra nada en la ultima caja, le echare un ojo al Logcat, a ver que me dice...
El logcat no te va a mostrar ningún mensaje de error, pues no hay ninguno, o no al menos nada que pueda detectar como error. El problema está en la condición de este for:String cadenaResultado = "";
for(int i = 0; i >= resultado.length; i++)
{
cadenaResultado = cadenaResultado + resultado[i];
}
cajaResultado.setText(cadenaResultado);
i = 0, resultado.length = 100, i nunca va a ser mayor o igual que 100.