0

我有一个扩展另一个活动(BaseMenuActivity.java)的活动(Categories.java)

在第一个活动中,当我按下操作栏按钮(R.id.search)时,我调用了一个对话框,该对话框具有位于第二个活动(BaseMenuActivity.java)的 EditText(mEdit)。

我的第一个 Activity (Categories.java) 声明如下:

public class Categories extends BaseMenuActivity implements OnItemClickListener {
..............
}

第二个活动(BaseMenuActivity.java)如下:

abstract class BaseMenuActivity extends Activity {

private Context context;

/// Creates the menu items
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_list, menu);
return true;
}

//Handles item selections from preference menu
@Override
public boolean onOptionsItemSelected(MenuItem item) {

context=this;

if(item.getItemId()==android.R.id.home){
    Intent intent = new Intent(this, Categories.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    return true;
}

if(item.getItemId()==R.id.search){

    LayoutInflater inflater=this.getLayoutInflater();
    AlertDialog.Builder builderbanner = new AlertDialog.Builder(this);
    builderbanner.setView(inflater.inflate(R.layout.search_dialog, null));
    builderbanner.setTitle("Search.......");
    //.setMessage(".........................")
    builderbanner.setPositiveButton("OK",
            new DialogInterface.OnClickListener() {

        EditText mEdit;
        String searchWord;

        public void onClick(DialogInterface dialog, int which) {

            Dialog f=(Dialog) dialog;

            mEdit= (EditText)f.findViewById(R.id.searchWord);
            searchWord= mEdit.getText().toString();

            Intent i= new Intent(context, Love_db.class);
            Bundle extracase = new Bundle();
            extracase.putString("label", "SEARCH RESULTS");
            extracase.putString("searchWord", searchWord);
            extracase.putInt("index", 99);
            i.putExtras(extracase);
            startActivity(i);
            dialog.dismiss();
        }
    });
    builderbanner.create();
    builderbanner.show();
    return true;
}

if(item.getItemId()==R.id.mine){
    //startActivity(new Intent(this, SendMyMantinada.class));
    return true;
}

if(item.getItemId()==R.id.prefs){
    //startActivity(new Intent(this, EditPreferences.class));
    return true;
}

return super.onOptionsItemSelected(item);
}

}

我想问为什么这个 EditText (mEdit) 在按下后退按钮时不保留它的值,或者为什么当我改变方向时对话框消失了。我应该怎么做才能解决这个问题,因为我想保留我在 EditText mEdit 输入的文本。

谢谢

4

1 回答 1

0

活动的生命周期

当您从一项活动移至另一项活动时,所有要分配的值都已删除。

您的问题的解决方案: 您必须将 edittext 的值存储在共享首选项或数据库中。

于 2013-07-30T10:17:28.480 回答