如何为另一个活动保存int?

时间:2015-01-28 03:34:29

标签: java android android-activity

我有一个活动,用户在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;显然它不是代码的一部分。只是看看错误在哪里。

3 个答案:

答案 0 :(得分:1)

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

Passing Values To Another Activity

答案 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)

如何将活动中的数据传递给另一个活动可能会有很大差异,具体取决于活动的相关方式。

  1. 如果您将数据从父级传递给子级活动,则在启动新的子级Activity时通过Intent传递信息。以下是您发送信息的方式:

    itt = new Intent(this,ChildActivityName.class); //创建新的Intent itt.putExtra(“MAX”,maxcont); //填写Intent数据 startActivity(itt,SOME_NUMBER_IDENTIFYING_THE_PARENT); //开始活动

  2. 以下是接收子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. 如果您以另一种方式传递数据,从子项传递到父项,这是使用startActivityForResult传递的最简单方法。父级使用以下命令启动子活动:

      startActivityForResult(itt,SOME_NUMBER_IDENTIFYING_THE_PARENT);

    2. 然后,孩子在退出之前将信息传递给父母:

      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的数据的发送方和接收方使用完全相同的字符串!

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

      2. 如果您需要在两个可能活动或不活动的兄弟活动之间传递信息,那么您需要使用广播/接收器范例。但我认为这种方法对于你所谈论的内容来说太过分了。