如何在返回到上一个“活动”的editText中显示相同的值



我使用了两个editText框,如"table no"one_answers"no of guest"。如果我填充editText框并在列表中选择一些项目View,然后转到下一个活动并再次返回到上一个活动,在editText框可用的地方,值为空。我的要求是,当我回到上一个活动时,EditText会显示我以前输入的数据。

发送编辑文本数据:

   b1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
                    //for (int i=0;i<GlobalClass.myval.length;i++){
                   //System .out.println("Clicked-->"+GlobalClass.myval[i]);
                    //}
            String tno = e1.getText().toString();
            int tn = Integer.parseInt(tno);
            Intent i=new Intent(getApplicationContext(),TicketActivity.class);
            Bundle b=new Bundle();
            b.putInt("Table No:", tn);
            i.putExtras(b);
            String et= e2.getText().toString();
            int et1 = Integer.parseInt(et);
            Bundle be=new Bundle();
            be.putInt("Guest:", et1);
            i.putExtras(be); 
            startActivity(i);

        }
    });

第二项活动:

   public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket);

t1=(TextView)findViewById(R.id.textView3);
t2=(TextView)findViewById(R.id.textView5);
l1=(ListView)findViewById(R.id.listView1);
or=(ImageButton)findViewById(R.id.imageButton7);
ho=(ImageButton)findViewById(R.id.imageButton4);
de=(ImageButton)findViewById(R.id.imageButton1);
pl=(ImageButton)findViewById(R.id.imageButton2);
mi=(ImageButton)findViewById(R.id.imageButton3);
pa=(ImageButton)findViewById(R.id.imageButton5);
pr=(ImageButton)findViewById(R.id.imageButton6);
// l1.setItemsCanFocus(false);
//l1.setFocusable(true);
//l1.setClickable(true);
//Get the Table no Value From Edit Text

Intent i1=getIntent();
Bundle b=i1.getExtras();
int num=b.getInt("Table No:");
pno=Integer.toString(num);
t1.setText(pno);
//Get The Guest Value From Edit Text
 Intent i2=getIntent();
 Bundle b1=i2.getExtras();
 int num1=b1.getInt("Guest:");
 pno1=Integer.toString(num1);
 t2.setText(pno1);


// List<String> st=GlobalClass.myval;
   //ArrayAdapter<String> ada = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1,st);
    l1.setAdapter(new EfficientAdapter(TicketActivity.this));
     l1.setOnItemClickListener(new OnItemClickListener(){
 public void onItemClick(AdapterView<?> parent,View view,int position,long id){
 st2=HomeActivity.select1[position];
    Toast.makeText(getApplicationContext(), "Selected:" + st2, Toast.LENGTH_SHORT).show();
    }
    });
 //GO TO PREV ACTIVITY:

    ho.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent o2=new Intent(TicketActivity.this,HomeActivity.class);
        startActivity(o2);
    }
  });
      }
    }

在调用活动中

Intent i = new Intent(A.this, B.class);
i.putExtra("string", editText.getText());
startActivity(i);

在调用的活动中,有一个String来获取这个额外的值,并在onStop()时再次将其传递给

Bundle extras = getIntent().getExtras();
String str = extras.getString("string");

在家活动:

public void onCreate(Bundle savedInstanceState){
....
  if(getIntent().getExtras()!=null) {
     Bundle extras = getIntent().getExtras();
     if(extras.getInt("TableNo") != null && extras.getInt("Guest") != null) }
        e1.setText(extras.getInt("TableNo").toString());
        e2.setText(extras.getInt("Guest").toString());
     }
  }
....
}

   b1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
                //for (int i=0;i<GlobalClass.myval.length;i++){
               //System .out.println("Clicked-->"+GlobalClass.myval[i]);
                //}
        String tno = e1.getText().toString();
        int tn = Integer.parseInt(tno);
        String et= e2.getText().toString();
        int et1 = Integer.parseInt(et);
        Intent i=new Intent(getApplicationContext(),TicketActivity.class);
        i.putExtras("TableNo", tn);
        i.putExtras("Guest", et1); 
        startActivity(i);

    }
});

第二项活动:

   public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket);

t1=(TextView)findViewById(R.id.textView3);
t2=(TextView)findViewById(R.id.textView5);
l1=(ListView)findViewById(R.id.listView1);
or=(ImageButton)findViewById(R.id.imageButton7);
ho=(ImageButton)findViewById(R.id.imageButton4);
de=(ImageButton)findViewById(R.id.imageButton1);
pl=(ImageButton)findViewById(R.id.imageButton2);
mi=(ImageButton)findViewById(R.id.imageButton3);
pa=(ImageButton)findViewById(R.id.imageButton5);
pr=(ImageButton)findViewById(R.id.imageButton6);
// l1.setItemsCanFocus(false);
//l1.setFocusable(true);
//l1.setClickable(true);
//Get the Table no Value From Edit Text

Intent i1=getIntent();
Bundle b=i1.getExtras();
int num=b.getInt("TableNo"); 
pno=Integer.toString(num);
t1.setText(pno);
//Get The Guest Value From Edit Text
 Intent i2=getIntent();
 Bundle b1=i2.getExtras();
 int num1=b1.getInt("Guest");
 pno1=Integer.toString(num1);
 t2.setText(pno1);


// List<String> st=GlobalClass.myval;
   //ArrayAdapter<String> ada = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1,st);
    l1.setAdapter(new EfficientAdapter(TicketActivity.this));
     l1.setOnItemClickListener(new OnItemClickListener(){
 public void onItemClick(AdapterView<?> parent,View view,int position,long id){
 st2=HomeActivity.select1[position];
    Toast.makeText(getApplicationContext(), "Selected:" + st2, Toast.LENGTH_SHORT).show();
    }
    });
 //GO TO PREV ACTIVITY:

    ho.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        String tno = t1.getText().toString();
        int tn = Integer.parseInt(tno);
        String et= t2.getText().toString();
        int et1 = Integer.parseInt(et);
        Intent o2=new Intent(TicketActivity.this,HomeActivity.class);
        i.putExtras("TableNo", tn);
        i.putExtras("Guest", et1);
        startActivity(o2);
    }
  });
      }
    }

此外,请尝试按逻辑命名变量。随机命名不是一种好的编程方法,可能会妨碍代码的可维护性

注意:请纠正一些小错误(如果有的话)。我现在没有android sdk,所以无法编译此代码。

进入下一个活动时保存EditText字段的值。然后在返回到上一个活动时检索该值。两个步骤:

  1. 您需要覆盖onSaveInstanceState(Bundle savedInstanceState)并保存EditText字段的值:

    @覆盖
    public void onSaveInstanceState(Bundle savedInstanceState)

    super.onSaveInstanceState(savedInstanceState)
    savedInstanceState.putString("MyString","EditText value")
    }

  2. Bundle本质上是一种存储NVP("名称-值对")映射的方式,它将被传递到onCreate和onRestoreInstanceState,在那里您可以提取如下值:

    @覆盖
    public void onRestoreInstanceState(Bundle savedInstanceState)

    super.onRestoreInstanceState(savedInstanceState)
    String myString=savedInstanceState.getString("myString")
    }

您通常会使用这种技术来存储应用程序的实例值(选择、未保存的文本等)

回答提供:使用保存实例状态保存Android活动状态

声明一个class和一个静态变量并将值存储在静态变量中像这个

public class globalconstant 
{ 
  public static String edtStr; 
}

储值

globalconstant.edtStr = edt.getText().toString();

当你想使用调用globalconstant.edtStr

最新更新