Pregunta

Como llegar valor de EditarTexto de subactividad? Con la condición de que si hago clic en el botón Atrás en el teléfono, no hay error en la Sub-Actividad?

Esta es mi Sub-Actividad código:

    public class SBooksSearch extends Activity {
    private EditText mTextSearch;   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.sbooks_search); 

        mTextSearch = (EditText)findViewById(R.id.edit_search);     
        Button searchButton = (Button)findViewById(R.id.btn_search);        

        searchButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){                
                Intent data = new Intent();             
                data.putExtra(SBooksDbAdapter.KEY_TITLE_RAW, mTextSearch.getText().toString());         
                setResult(RESULT_OK, data);
                finish();
            }
        });
    }   

    @Override
    protected void onSaveInstanceState(Bundle outState){
        super.onSaveInstanceState(outState);        
    }
    @Override
    protected void onPause(){
        super.onPause();

    }
    @Override
    protected void onResume(){
        super.onResume();       
    }
}

Esta es mi Actividad-Resultado:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);        
switch(requestCode){
case ACTIVITY_SEARCH:
Bundle extras = getIntent().getExtras();
mTitleRaw = extras != null ? extras.getString(SBooksDbAdapter.KEY_TITLE_RAW) : null;            
     if(mTitleRaw!=null){
      Cursor cursor = mDbHelper.searchData(mTitleRaw);

    String[] from = new String[]{ SBooksDbAdapter.KEY_ROWID,
                        SBooksDbAdapter.KEY_TITLE, SBooksDbAdapter.KEY_LYRICS };
        int[] to = new int[]{ R.id.id, R.id.title, R.id.lyrics };
        SimpleCursorAdapter adapter = 
                    new SimpleCursorAdapter(this, R.layout.sbooks_row, cursor, from, to );
           setListAdapter(adapter);
            }           
           break;
        }
    }
¿Fue útil?

Solución

En primer lugar, no se debe intentar cualquier tipo de acción si el usuario pulsa el botón "atrás". Es un botón global que significa "sácame de aquí ahora", y se entiende generalmente que el usuario desea otra cosa que volver una pantalla a ocurrir como resultado de ello.

Así que lo que hay que hacer es en su searchButton.setOnClickListener, en el onclick, crear un vacío Intención de esta manera:

Intent data = new Intent();

Luego hay que ir añadiendo el valor de su EditarTexto como un valor extra, así:

data.putExtra(SBooksDbAdapter.KEY_TITLE_RAW, mTextSearch.getText().toString());

Finalmente, incluya esta intención en su llamada setResult:

setResult(RESULT_OK, data);

En su onActivityResult tirar del valor de la intención, como ya se está haciendo y que debe estar bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top