我有一个活动,用户在EditText
中写入一个数字,然后我应该将其转换为字符串然后转换为int,但我想保存该值,因为我将要使用对于另一个活动,它将是按下按钮的最大次数,但我不知道如何将它从活动中的EditText
保存到另一个活动中的int。
这是第一项活动的EditText
:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/texthome"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:hint="Ejemplo:15"
android:layout_weight="1"
android:textSize="20sp" />
这里将textview转换为int:
EditText conttext = (EditText) findViewById ( R.id.texthome );
String maxicont = conttext.getText().toString();
int maxcont = Integer.parseInt(maxicont);
更新: 我收到错误:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button buttsave = (Button) findViewById(R.id.buttsave);
buttsave.setOnClickListener(new View.OnClickListener"here" {
public void onClick "here" {
Intent intent = new Intent(getApplicationContext(), GuessOne.class);
intent.putExtra("maxNumberPressed", conttext.getText());
startActivity(intent);
}
});
在我放置&#34; here&#34;显然它不是代码的一部分。只是看看错误在哪里。
答案 0 :(得分:1)
您需要使用Intents。这里回答了类似的问题:
答案 1 :(得分:0)
开始其他活动时,请制作一个包。
在当前活动中,尝试:
Intent intent = new Intent(getApplicationContext(), <next activity>.class);
intent.putExtra("maxNumberPressed", editText.getText());
startActivity(intent);
然后在您正在使用它的下一个活动中,将其放在onCreate方法中:
Bundle bundle = this.getIntent().getExtras();
String maxPressed = bundle.getString("maxNumberPressed");
创建一个文本为“保存”的按钮。然后做:
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener{
public void onClick() {
Intent intent = new Intent(getApplicationContext(), <next activity>.class);
intent.putExtra("maxNumberPressed", editText.getText());
startActivity(intent);
}
});
答案 2 :(得分:0)
如何将活动中的数据传递给另一个活动可能会有很大差异,具体取决于活动的相关方式。
如果您将数据从父级传递给子级活动,则在启动新的子级Activity时通过Intent传递信息。以下是您发送信息的方式:
itt = new Intent(this,ChildActivityName.class); //创建新的Intent itt.putExtra(“MAX”,maxcont); //填写Intent数据 startActivity(itt,SOME_NUMBER_IDENTIFYING_THE_PARENT); //开始活动
以下是接收子Activity如何检索它:
void onCreate(Bundle savedInstanceState) {
...
Intent itt = getIntent(); // Grab the Intent created with this Activity
int maxcont = itt.getIntExtra("MAX", -1); // Retrieve data, default is -1
}
如果您以另一种方式传递数据,从子项传递到父项,这是使用startActivityForResult传递的最简单方法。父级使用以下命令启动子活动:
startActivityForResult(itt,SOME_NUMBER_IDENTIFYING_THE_PARENT);
Intent itt = new Intent(); // Create new Intent
itt.putExtra("MAX_RETURN", maxcont); // Add data to the Intent
setResult(RESULT_OK, itt); // Signal to parent valid result
finish(); // End this Activity
孩子调用finish()
后,将调用父级的onActivityResult()
方法:
protected void onActivityResult(int requestCode, int resultCode, Intent itt) {
maxcont = data.getIntExtra("MAX_RETURN", -1); // defaults to -1
...
}
putExtra和getIntExtra中使用的字符串用于标识关联数据的关键字,这些关键数据在Android编程中被广泛使用,超出了本问题的范围。只需确保通过Intents的数据的发送方和接收方使用完全相同的字符串!
如果您需要在两个同时活动的活动之间传递信息,最简单的方法是通过每个活动中的静态公共变量。这很基本;你应该没有问题。
如果您需要在两个可能活动或不活动的兄弟活动之间传递信息,那么您需要使用广播/接收器范例。但我认为这种方法对于你所谈论的内容来说太过分了。