如何为另一个 activity 保存一个整数?

How to save an int for another activity?

我有一个 activity 用户在 EditText 中写入一个数字,然后我应该将其转换为字符串,然后再转换为 int,但我想保存该值因为我要将它用于另一个 activity,这将是一个按钮可以按下的最大次数,但我不知道如何从 EditText 中保存它 activity 到另一个 activity 中的一个整数。 这里第一个activity的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);
        }
    });

我在放置 "here" 的地方出现错误,显然它不是代码的一部分。只是看看错误在哪里。

为此您需要使用 Intents。这里回答了类似的问题:

Passing Values To Another Activity

启动另一个 activity 时,打包。

当前activity,尝试:

Intent intent = new Intent(getApplicationContext(), <next activity>.class);
intent.putExtra("maxNumberPressed", editText.getText());
startActivity(intent);

然后在下一个activity你要使用它的地方,把它放在onCreate方法中:

Bundle bundle = this.getIntent().getExtras();
String maxPressed = bundle.getString("maxNumberPressed");

创建一个文本为 'save' 之类的按钮。然后做:

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

如何将数据从 Activity 传递到另一个可能有很大差异,具体取决于活动的关联方式。

  1. 如果您将数据从 parent 传递到 child Activity,您将信息传递给启动新 child Activity 时的 Intent。发送信息的方式如下:

    itt = new Intent(this, ChildActivityName.class); // 创建新的意图 itt.putExtra("MAX", maxcont); // 用数据填充 Intent 开始Activity(itt, SOME_NUMBER_IDENTIFYING_THE_PARENT); // 开始 Activity

下面是接收方 child 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
}
  1. 如果您以其他方式传递数据,从 child 到 parent Activity,则使用 startActivityForResult 传递的最简单方法。 parent 使用此命令启动 child activity:

    开始ActivityForResult(itt, SOME_NUMBER_IDENTIFYING_THE_PARENT);

Child 然后在退出前将信息传回 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

一旦child调用finish(),parent的onActivityResult()方法将被调用:

protected void onActivityResult(int requestCode, int resultCode, Intent itt) {
    maxcont = data.getIntExtra("MAX_RETURN", -1);  // defaults to -1
    ...

}

putExtra 和 getIntExtra 中使用的字符串是关联数据的标识键,它们在 Android 编程中随处使用,超出了本问题的范围。只需确保通过 Intent 的数据发送方和接收方使用完全相同的字符串!

  1. 如果您需要在两个都处于活动状态的同级活动之间传递信息,最简单的方法是通过每个 public 中的静态变量 Activity。这是很基本的;这些你应该没有问题。

  2. 如果您需要在可能活动或不活动的两个同级活动之间传递信息,那么您需要使用Broadcast/Receiver范式.但我认为这种方法对你所说的来说有点矫枉过正。