我已经创建了一个连接到SQL数据库的应用程序,它们返回数据库表中的条目。
我所做的是:在应用程序中,我可以看到数据库表中的条目。我想要的是:当我在应用程序中选择条目时,它会自动打开另一个窗口并显示我选择的条目。
但是现在它给了我一个错误(抱歉!应用程序网络Ben(进程net.ben)意外停止。请再试一次)并且应用程序正在关闭。我认为它是将Arraylist字符串转换为捆绑字符串的东西。
这是我的代码:
public class SeleccionarTipoIncidencia extends Activity {
private ArrayList<String> datos;
public String PRUEBA;
//private ArrayList<String> datosCod;
//public NaviverdeSQLiteHelper usdbh;
protected EspaisVerdsApplication app;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tipoincidencia);
datos = new ArrayList<String>();
//datosCod = new ArrayList<String>();
try {
NotesCenter messageCenter = new NotesCenterImpl();
List<TipoIncidencia> tipoincidencia = messageCenter.getTipoIncidencia();
for (TipoIncidencia e : tipoincidencia) {
//datosCod.add("1");
datos.add(e.id);
}
} catch (Exception ex) {
// showMessage(ex);
Log.v("blah", ex.getMessage());
}
ArrayAdapter<String> adaptador =
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, datos);
final TextView lblMensaje = (TextView)findViewById(R.id.MensajeTipoIncidencia);
final GridView grdOpciones = (GridView)findViewById(R.id.GridTipoIncidencia);
Log.i("YourApp", "Argh Works?");
grdOpciones.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, android.view.View v, int position, long id) {
lblMensaje.setText("Incidencia Seleccionada: " + datos.get(position));
Intent intentTipIni = new Intent(SeleccionarTipoIncidencia.this, FrmIncidencias.class);
//Creamos la información a pasar entre actividades
Bundle b = new Bundle();
b.putString("TIPOINCIDENCIA", lblMensaje.getText().toString());
//Añadimos la información al intent
intentTipIni.putExtras(b);
//Iniciamos la nueva actividad
startActivity(intentTipIni);
Log.i("YourApp", "Bueno7");
finish();
}
});
grdOpciones.setAdapter(adaptador);
}
}
protected PowerManager.WakeLock wakelock;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frmincidencias);
TextView txtSaludo = (TextView)findViewById(R.id.TxtTipoIncidenciaSeleccionado);
//Recuperamos la información pasada en el intent
Bundle bundle = this.getIntent().getExtras();
//Construimos el mensaje a mostrar
txtSaludo.setText("Hola " + bundle.getString("TIPOINCIDENCIA"));
我在最后一行收到错误。
答案 0 :(得分:1)
我不太确定putExtras
是如何工作的,但我相信putExtra(String, String)
可以按预期工作(我多次使用它)所以我不会创建Bundle
而是会执行以下操作:
Intent intentTipIni = new Intent(SeleccionarTipoIncidencia.this, FrmIncidencias.class);
intentTipIni.putExtra("TIPOINCIDENCIA", lblMensaje.getText().toString());
startActivity(intentTipIni);
此外,它可能是
TextView txtSaludo = (TextView) findViewById(R.id.TxtTipoIncidenciaSeleccionado);
即null
。你能确定它不是null
吗?
答案 1 :(得分:0)
您是否检查startActivity(Intent i)
实际上是否成功?如果不是,它可能不会将Intent
绑定到您的班级,那么您可能没有分配Bundle
。因此,您获得NullPointerException
,或者可能不是Bundle
,在这种情况下,您的String
“T ....”不是有效密钥,因此会抛出错误。检查一下。