当前位置: 首页 > 知识库问答 >
问题:

活动1调用活动2并从活动2获取字符串结果[重复]

张和豫
2023-03-14

我把一个额外的动作从第一个动作传给第二个动作。我验证传递给第二个活动的内容。我让它按我的计划运行。我的问题是如何将字符串值传递回第一个活动。

这里我把第一个活动称为第二个活动。

public void scannedItem(String barCode,String localArea){
    Intent intent = new Intent(this,selectItemActivity.class);
    intent.putExtra("Barcode",mScan);
    intent.putExtra("Area",myArea);
    startActivityForResult(intent,1);
   // finish();
}

在第二个活动中,我像这样从第一个活动接收数据

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_select_item);
    passedArea = getIntent().getExtras().getString("Area");
    passedScan=getIntent().getExtras().getString("Barcode");

    updateScreen();
}

我对从第一个活动传递的额外内容执行验证,并希望将单个字符串传递回第一个活动。在第二个活动中,我加载了一个RecyclerViewer并在我尝试过的onClick上。

    public void onSelectClick(View view){
        String lSelectLocation = mLocations.getLocation();
        Timber.d(lSelectLocation);
        Intent intent = getIntent();
        intent.putExtra("Location",lSelectLocation);
        finish();
    }

我的问题至少有两部分。1.)第二个将字符串值传回的活动有什么错误。2.)在第一个活动中,返回字符串所需的内容。我尝试过恢复,但以下内容无效。

protected void onResume() {
    super.onResume();
    final String sender=this.getIntent().getExtras().getString("Location");
    if(sender != null)
    {
        this.receiveData();
        Toast.makeText(this, "Received", Toast.LENGTH_SHORT).show();

    }

}

我在第一次活动中也有这种方法,但它似乎没有被解雇。

protected ull onActivityResult(int request estCode, String request estLocation, Intent data){mLoc.setText(request estLocation);}

在Java的最后几个月里,我学到了很多东西。我有多年的时间担任VB. net程序员,有时会迷失在差异中。

提前谢谢大家。

共有2个答案

葛阳华
2023-03-14

在活动2中使用setResult,在活动1中使用获取onActivityResult中的值。。。。

澹台衡
2023-03-14

将onSelectClick方法中的getIntent();替换为new Intent();并定义setResult,因为它将调用此来设置您的活动将返回给其调用者的结果。

public void onSelectClick(View view){
    String lSelectLocation = mLocations.getLocation();
    Timber.d(lSelectLocation);
    Intent intent = new Intent();
    intent.putExtra("Location",lSelectLocation);
    setResult(1, intent);
    finish();
}

在第一个活动中,使用onActivityResult获取第二个活动的返回值,而不是在onResume中。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == 1) {

        String str_location = null;
        if (data != null) {
            str_location = data.getStringExtra("Location");
            if (str_location != null) {
                Toast.makeText(MainActivity.this, str_location, Toast.LENGTH_LONG).show();
            }
        }

    }
}
 类似资料:
  • 我有一个应用程序的屏幕小部件。单击此小部件时,会打开“DeveloperMode”设置。但在一些设备上,应用程序因以下消息而崩溃。 引起:android.util.AndroidRuntimeExcture:从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? 我曾尝试使用addFlags和setFlags添加这一行,但仍然存在相同

  • 我有3个活动A、B和C。A导致B,B导致C。我希望能够在A和B之间来回移动,但我希望在C开始后完成A和B。我知道如何在通过意图启动C时关闭B,但在启动C时如何关闭A?

  • 我有一个包含服务方法的报警服务服务类。这些方法在警报服务激活时被调用。我想做的是调用这些方法中的另一个类的意图,这些方法在服务类中被调用(当警报关闭时)。它所做的只是在调用意图时标记错误。这只发生在激活警报服务时调用的方法中(服务类中的方法)。这是因为类而不是吗?我不确定,有什么想法吗? (以下是我的服务类,当在方法中调用另一个活动的意图时,应用程序强制关闭。) LogCat上的这些错误之一是:

  • 编辑:这是我的舱单

  • 我有两个活动A和B。A启动活动B。在活动B中,我在按钮单击处理程序中调用setResult(RESULT_OK,intent),而不调用finish()-这是理想的行为。 旋转B并按back后,A的onActivityResult接收resultCode的RESULT_Cancelled,而不是RESULT_ OK。 我知道这是因为活动B在旋转时被破坏了。确保从B返回正确的结果代码的常见做法是什么

  • 我想做的是以下几点: 自活动: %1是登录到我的应用程序服务器的设备的Id。服务器然后以JSONArray格式检索与此ID关联的所有消息。我将这些JSONObjects转换为我构建的Message类,并将所有这些新对象保存为MessageCentre类实例中的静态数组。 所以我可以想出一些方法来处理这个问题: 1)一种使活动在没有ANR的情况下等待一段时间的方法 2)在某种回调方法中,以某种方式将