Я пытаюсь передать параметр от одного вида деятельности (ActividadInsercionObjeto) к другой (DatosSensor) с помощью намерения, но я пытался с не выходом. Я не уверен, что я делаю неправильно.Намерение не отправляет значения из EditText, андроид
Значение, которое мне нужно передать, - это последнее значение, называемое idObjeto на фото.jpg. Это значение исходит из SQLite, который был синхронизирован с удаленным MySql, поэтому, когда активность начала открыта, значения попадают внутрь полей.
Когда я нажимаю кнопку, то активности придется принимать значение от campoIdObjeto
, который является значением «idObjeto на фото», а затем он должен отправить это значение sencond деятельности и показать его в тост. Когда я исполняю приложение, он останавливается и отправить это сообщение:
java.lang.NullPointerException: Попытка вызвать виртуальный метод
«android.os.Bundle android.content.Intent.getExtras() 'на нулевой ссылке .
Фото: photoscreen Я не знаю, почему он не принимает значение ...
Любая помощь будет приветствоваться. Благодаря Oscar
активность происхождения:
public class ActividadInsercionObjeto extends AppCompatActivity
implements LoaderManager.LoaderCallbacks<Cursor>, View.OnClickListener {
// Referencias UI
private EditText campodescripcionNombre;
private EditText campoMarca;
private EditText campoModelo;
private EditText campoCorreo;
private EditText campoIdObjeto;
private Button accesodata;
public final static String EXTRA_ID = "idObjeto";
public EditText IdentidadObjeto;
// Clave del uri del objeto como extra
public static final String URI_OBJETO = "extra.uriObjeto";
private Uri uriObjeto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actividad_insercion_objeto);
//agregarToolbar();
// Encontrar Referencias UI
campodescripcionNombre = (EditText) findViewById(R.id.campo_descripcion_nombre);
campoMarca = (EditText) findViewById(R.id.campo_marca);
campoModelo = (EditText) findViewById(R.id.campo_modelo);
campoCorreo = (EditText) findViewById(R.id.campo_correo);
campoIdObjeto = (EditText) findViewById(R.id.campo_idObjeto);
accesodata = (Button) findViewById(R.id.accesodata);
accesodata.setOnClickListener(this);
// Determinar si es detalle
String uri = getIntent().getStringExtra(URI_OBJETO);
if (uri != null) {
setTitle(R.string.titulo_actividad_editar_objeto);
uriObjeto = Uri.parse(uri);
getSupportLoaderManager().restartLoader(1, null, this);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_insercion_objeto, menu);
// Verificación de visibilidad acción eliminar
if (uriObjeto != null) {
menu.findItem(R.id.accion_eliminar).setVisible(true);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.accion_confirmar:
insertar();
break;
case R.id.accion_eliminar:
eliminar();
break;
}
return super.onOptionsItemSelected(item);
}
private void insertar() {
// Extraer datos de UI
String descripcionNombre = campodescripcionNombre.getText().toString();
String marca = campoMarca.getText().toString();
String modelo = campoModelo.getText().toString();
String correo = campoCorreo.getText().toString();
String IdentidadObjeto = campoIdObjeto.getText().toString();
// Validaciones y pruebas de cordura
if (!esNombreValido(descripcionNombre)) {
TextInputLayout mascaraCampoNombre = (TextInputLayout)findViewById(R.id.mascara_campo_nombre);
// esta linea la he añadido, si da fallo eliminar. Sujerida por corrector
assert mascaraCampoNombre != null;
// esta linea la he añadido, si da fallo eliminar. Sujerida por corrector fin
mascaraCampoNombre.setError("este campo no puede quedar vacio");
} else {
ContentValues valores = new ContentValues();
// Verificación: ¿Es necesario generar un id?
if (uriObjeto == null) {
valores.put(Objetos.ID_OBJETO, Objetos.generarIdObjeto());
}
valores.put(Objetos.DESCRIPCION_NOMBRE, descripcionNombre);
valores.put(Objetos.MARCA_MARCA, marca);
valores.put(Objetos.MODELO, modelo);
valores.put(Objetos.CORREO, correo);
valores.put(Objetos.VERSION, UTiempo.obtenerTiempo());
// Iniciar inserción|actualización
new TareaAnadirObjeto(getContentResolver(), valores).execute(uriObjeto);
finish();
}
}
private boolean esNombreValido(String nombre) {
return !TextUtils.isEmpty(nombre);
}
private void eliminar() {
if (uriObjeto != null) {
// Iniciar eliminación
new TareaEliminarObjeto(getContentResolver()).execute(uriObjeto);
finish();
}
}
private void poblarViews(Cursor data) {
if (!data.moveToNext()) {
return;
}
// Asignar valores a UI
campodescripcionNombre.setText(UConsultas.obtenerString(data, Objetos.DESCRIPCION_NOMBRE));
campoMarca.setText(UConsultas.obtenerString(data, Objetos.MARCA_MARCA));
campoModelo.setText(UConsultas.obtenerString(data, Objetos.MODELO));
campoCorreo.setText(UConsultas.obtenerString(data, Objetos.CORREO));
campoIdObjeto.setText(UConsultas.obtenerString(data, Objetos.ID_OBJETO));
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(this, uriObjeto, null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
poblarViews(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
@Override
public void onClick(View v) {
if (v == accesodata) {
Intent i = new Intent(ActividadInsercionObjeto.this, DatosSensor.class);
i.putExtra("IdentidadEnviada", (Serializable) campoIdObjeto);
startActivity(i);
}
}
static class TareaAnadirObjeto extends AsyncTask<Uri, Void, Void> {
private final ContentResolver resolver;
private final ContentValues valores;
public TareaAnadirObjeto(ContentResolver resolver, ContentValues valores) {
this.resolver = resolver;
this.valores = valores;
}
@Override
protected Void doInBackground(Uri... args) {
Uri uri = args[0];
if (null != uri) {
Cursor c = resolver.query(uri, new String[]{Objetos.INSERTADO}, null, null, null);
if (c != null && c.moveToNext()) {
// Verificación de sincronización
if (UConsultas.obtenerInt(c, Objetos.INSERTADO) == 0) {
valores.put(Objetos.MODIFICADO, 1);
}
valores.put(Objetos.VERSION, UTiempo.obtenerTiempo());
resolver.update(uri, valores, null, null);
}
} else {
resolver.insert(Objetos.URI_CONTENIDO, valores);
}
return null;
}
}
static class TareaEliminarObjeto extends AsyncTask<Uri, Void, Void> {
private final ContentResolver resolver;
public TareaEliminarObjeto(ContentResolver resolver) {
this.resolver = resolver;
}
@Override
protected Void doInBackground(Uri... args) {
Cursor c = resolver.query(args[0], new String[]{Objetos.INSERTADO}
, null, null, null);
int insertado;
if (c != null && c.moveToNext()) {
insertado = UConsultas.obtenerInt(c, Objetos.INSERTADO);
} else {
return null;
}
if (insertado == 1) {
resolver.delete(args[0], null, null);
} else if (insertado == 0) {
ContentValues valores = new ContentValues();
valores.put(Objetos.ELIMINADO, 1);
resolver.update(args[0], valores, null, null);
}
return null;
}
}
}
Destiny активность:
public class DatosSensor extends AppCompatActivity {
private DrawerLayout drawerLayout;
String idObjeto = (String) getIntent().getExtras().getSerializable("IdentidadEnviada");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actividad_datos_sensor);
Toast.makeText(getApplicationContext(),idObjeto, Toast.LENGTH_LONG).show();
agregarToolbar();
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
if (navigationView != null) {
prepararDrawer(navigationView);
// Seleccionar item por defecto
seleccionarItem(navigationView.getMenu().getItem(0));
}
}
private void agregarToolbar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar ab = getSupportActionBar();
if (ab != null) {
// Poner ÃÂcono del drawer toggle
ab.setHomeAsUpIndicator(R.drawable.drawer_toggle);
ab.setDisplayHomeAsUpEnabled(true);
}
}
private void prepararDrawer(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
seleccionarItem(menuItem);
drawerLayout.closeDrawers();
return true;
}
});
}
private void seleccionarItem(MenuItem itemDrawer) {
Fragment fragmentoGenerico = null;
FragmentManager fragmentManager = getSupportFragmentManager();
switch (itemDrawer.getItemId()) {
startActivity(new Intent(this, com.amg_eservices.appiot.SaltoWeb.WebOficial.class));
break;
//fragmentoGenerico = new BlankFragment();
case R.id.item_categorias:
startActivity(new Intent(this, com.amg_eservices.appiot.MisSensores.ui.ActividadListaObjeto.class));
break;
case R.id.item_acceso:
startActivity(new Intent(this, com.amg_eservices.appiot.RegistroyAcceso.MainActivity.class));
break;
}
if (fragmentoGenerico != null) {
fragmentManager
.beginTransaction()
.replace(R.id.contenido_principal, fragmentoGenerico)
.commit();
}
// Setear titulo actual
setTitle(itemDrawer.getTitle());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_actividad_principal, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
}
campoIdObjetoi является текст правой ? –
xampoIdObjeto - это строка. Эта строка была сформирована в "valores.put (Objetos.ID_OBJETO, Objetos.generarIdObjeto());". –