gpt4 book ai didi

android - 切换 Intent 时我丢失了数据

转载 作者:行者123 更新时间:2023-11-30 03:43:11 24 4
gpt4 key购买 nike

当切换 Intent 时,我丢失了前一个 onActivityResult 的数据,我需要它保留从用户那里获得的两个数字,目前它将保留一个数字,然后当输入下一个时,它会丢失前一个,这是代码:

package com.eric.theworks;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

Button width, height, calc;
TextView area;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
width = (Button) findViewById(R.id.button1);
height = (Button) findViewById(R.id.button2);
calc = (Button) findViewById(R.id.button3);
area = (TextView) findViewById(R.id.textView1);

width.setOnClickListener(this);
height.setOnClickListener(this);
calc.setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(this, Numbers.class);
switch (v.getId()) {

case R.id.button1:
// width
i.putExtra("numbers", "width");
startActivityForResult(i, 1);

break;

case R.id.button2:
// height
i.putExtra("numbers", "height");
startActivityForResult(i, 1);

break;

case R.id.button3:
// calc

break;

}


}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (data.getExtras().containsKey("widthInfo")){
width.setText(data.getStringExtra("widthInfo"));

}
if (data.getExtras().containsKey("heightInfo")){
height.setText(data.getStringExtra("heightInfo"));

}

}

}





package com.eric.theworks;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Numbers extends Activity implements OnClickListener {
EditText number;
Button sendInfo;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.numbers);
number = (EditText) findViewById(R.id.editText1);
sendInfo = (Button) findViewById(R.id.button1);
sendInfo.setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String s = number.getText().toString();
Intent i = getIntent();
String msg = i.getStringExtra("numbers");
if (msg.contentEquals("width")) {
i.putExtra("widthInfo", s);
setResult(RESULT_OK, i);
finish();

}
if (msg.contentEquals("height")) {
i.putExtra("heightInfo", s);
setResult(RESULT_OK, i);
finish();

}

}

}

最佳答案

您可以使用静态变量来存储以前的数据。

全局声明静态字符串。

static String widthInfo="";
static String heightInfo="";

也给不同的Requestcode。

case R.id.button1:
// width
i.putExtra("numbers", "width");
startActivityForResult(i, 1);

break;

case R.id.button2:
// height
i.putExtra("numbers", "height");
startActivityForResult(i, 2);

然后在您的 onActivityResult 中使用它。

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case (1): {

if (data.getExtras().containsKey("widthInfo")){
widthInfo=data.getStringExtra("widthInfo")
width.setText(data.getStringExtra("widthInfo"));

} else {
height.setText(heightInfo);
width.setText(widthInfo);
}
}
break;
case (2):
{
if (data.getExtras().containsKey("heightInfo")){
heightInfo=data.getStringExtra("heightInfo")
height.setText(data.getStringExtra("heightInfo"));

}else {
height.setText(heightInfo);
width.setText(widthInfo);
}

}
break;
}
}

关于android - 切换 Intent 时我丢失了数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com