Frage

Wie EditText den Wert von Unter Aktivität zu bekommen? Mit der Bedingung, dass, wenn ich auf Zurück-Taste am Telefon, es gibt keine Fehler in Sub-Activity?

Das ist mein Sub-Activity Code:

    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();       
    }
}

Das ist mein Buff Ergebnis:

@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;
        }
    }
War es hilfreich?

Lösung

Zunächst einmal sollten Sie nicht jede Art von Aktion versucht werden, wenn der Benutzer die Schaltfläche „Zurück“ trifft. Es ist eine globale Taste, die „hol mich hier raus jetzt“ bedeutet, und es ist zu verstehen in der Regel, dass der Benutzer will nichts anderes als einen Bildschirm zurück als Folge davon auftreten.

Also, was Sie tun müssen, ist in Ihrem searchButton.setOnClickListener im onClick, eine leere Intent erstellen wie folgt:

Intent data = new Intent();

Dann müssen Sie den Wert Ihrer EditText als zusätzlichen Wert zu geben, etwa so:

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

Schließlich enthalten diese Absicht in Ihrem setResult Aufruf:

setResult(RESULT_OK, data);

In Ihrem onActivityResult den Wert zieht aus der Absicht, wie Sie bereits tun, und Sie sollten in Ordnung sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top