【问题标题】:Android pass increment value in intent between 2 activitiesAndroid在2个活动之间传递intent中的增量值
【发布时间】:2017-01-10 21:59:50
【问题描述】:

我在 2 个活动之间传递一个意图值以动态更改数据..

我在 onCreate 中的 home 活动中获取结束活动传递的值,就像这样 -

// Get Variable From Home Activity
    Bundle extras = getIntent().getExtras();
    String curhole;
    curhole = extras.getString("hole");
    TextView holeno = (TextView) findViewById(R.id.holeNumber);
    holeno.setText(String.valueOf("Hole " + curhole));

我的家庭活动中有这个 onClick 功能-

@Override
public void onClick(View v) {
    // Get Variable From Home Activity
    Bundle extras = getIntent().getExtras();
    String curhole;
    curhole = extras.getString("hole");

    Intent myIntent = new Intent(this, end.class);
    myIntent.putExtra("hole",curhole);
    startActivity(myIntent);

}

然后在我的最终活动中,我获取该值并将其传递回家庭活动 -

@Override
 public void onClick(View v) {
    Bundle extras = getIntent().getExtras();
    String curhole;
    curhole = extras.getString("hole");

    int incHole = Integer.parseInt(curhole);
    incHole++;
    String.valueOf(incHole);

    Intent myIntent = new Intent(this, hole.class);
    myIntent.putExtra("hole",incHole);
    startActivity(myIntent);

}

当我单击主页活动按钮转到结束活动并返回主页时,它说该值为空。知道为什么吗?我是 android 新手,所以我确定我的方法可能很糟糕。

谢谢!

【问题讨论】:

  • 你能再分享一些代码吗?您的问题还不清楚。

标签: java android android-intent increment


【解决方案1】:

可能是因为您需要获取 onResume() 中的值,因为它看起来不像您正在杀死 Home 活动,因此不会再次调用 onCreate()

您可能希望在这种情况下使用startActivityForResult(),但通过这种方式将起作用。

另外,Intent 有一个 [getIntExtra()](https://developer.android.com/reference/android/content/Intent.html#getIntExtra(java.lang.String, int)) 方法,所以我不确定您是否需要进行所有的转换。

【讨论】:

    【解决方案2】:

    我会将意图从家庭活动传递到结束活动变量,但将活动作为 startActivityForResult();然后在家庭活动中,您应该重写 onActivityResult();从结束活动中取回变量的方法。

    检查this tutorial of activity result阅读2.3。从子活动中检索结果数据

    【讨论】:

      【解决方案3】:

      分享更多。为什么将您的int 发送为String

      int incHole = Integer.parseInt(curhole);
      incHole++;
      //Should work as String or int
      Intent myIntent = new Intent(this, hole.class);
      myIntent.putExtra("hole", incHole);
      startActivity(myIntent);
      

      如果有帮助,请告诉我。检查这个link

      【讨论】:

      • 好问题,由于某种原因,我在传递整数时遇到了麻烦。虽然是的,但我需要传递一个 int 值来节省自己的工作量。
      【解决方案4】:

      当你按下 home 时,然后在 saveInstance() 活动方法中保存包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 2018-10-08
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-15
        • 2021-09-08
        相关资源
        最近更新 更多