Java 如何在secondActivity的片段中获得onActivityResult

Java 如何在secondActivity的片段中获得onActivityResult,java,android,android-studio,android-fragments,android-fragmentactivity,Java,Android,Android Studio,Android Fragments,Android Fragmentactivity,从片段我启动了FirstActivity,从FirstActivity我启动了SecondActivity。如何从SecondActivity的片段中获得onActivityResult。 我试图在firstActivity中添加android:noHistory=“true” 有没有办法做到这一点? 提前谢谢 碎片活动 @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup containe

从片段我启动了FirstActivity,从FirstActivity我启动了SecondActivity。如何从SecondActivity的片段中获得onActivityResult。 我试图在firstActivity中添加android:noHistory=“true”

有没有办法做到这一点? 提前谢谢

碎片活动

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    hotelImageMain.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(myContext, HotelsByLocation.class);
        intent.putExtra(HotelActivity.EXTRA_PARAM_FOR_RESULT, true);
        intent.putExtra(HotelsByLocation.EXTRA_PARAM_LOCATION_NAME, App.getInstance().getDayList().get(AddHotels.viewPager.getCurrentItem()).get(App.HASHMAP_PARA_CITY_NAME));
        intent.putExtra(HotelsByLocation.EXTRA_PARAM_LOCATION_ID, App.getInstance().getDayList().get(AddHotels.viewPager.getCurrentItem()).get(App.HASHMAP_PARA_CITY_ID));
        startActivityForResult(intent, MY_REQUEST_CODE_TWO);
     }
 });


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

      if (requestCode == MY_REQUEST_CODE_TWO) {
                  if (resultCode == Activity.RESULT_OK) {
                      Toast.makeText(myContext, "Welcome Back from HotelsByLocation", Toast.LENGTH_SHORT).show();
                      HashMap<String, String> map = new HashMap<String, String>();
                      map.put(App.HASHMAP_PARA_CITY_NAME, data.getStringExtra("cname"));
                      map.put(App.HASHMAP_PARA_CITY_ID, data.getStringExtra("cid"));
                      map.put(App.HASHMAP_PARA_HOTEL_NAME, data.getStringExtra("name"));
                      map.put(App.HASHMAP_PARA_HOTEL_IMAGE, data.getStringExtra("img"));
                      App.getInstance().getDayList().set(AddHotels.viewPager.getCurrentItem(),map);
                      hotel_name_main.setText(data.getStringExtra("name"));
                      Picasso.with(myContext)
                              .load(data.getStringExtra("img"))
                              .error(R.drawable.ic_empty)
                              .placeholder(R.drawable.ic_empty)
                              .into(hotelImageMain);

      }
      } else if (resultCode == Activity.RESULT_CANCELED) {
          // some stuff that will happen if there's no result
          Toast.makeText(myContext, "you haven't selected", Toast.LENGTH_SHORT).show();
      }
  }
第二项活动

public void onClick(View v) {
    Intent intent = new Intent();
    intent.putExtra("name",nameOfTheHotel );
    intent.putExtra("id", hotelId);
    setResult(Activity.RESULT_OK, intent);
    finish();
}

您可能希望从片段到第一个活动使用startActivity,然后从第一个活动到第二个活动使用startActivityForResult。当您从secondactivity获得结果时,您可以在firstactivity的onActivityResultResult上处理它,并使用intent从firstactivity转到片段,并将从第二个activity获得的值传递给firstactivity的片段。确保正确处理回撤。

首先,取消对该回撤的注释

startActivityForResult(intent, MY_REQUEST_CODE_TWO);
onItemClick
方法的
FirstActivity
和注释

//startActivity(intent);
将此
添加到activityresult
中的
FirstActivity

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == MY_REQUEST_CODE_TWO) {
        Intent intent = new Intent();
        intent.putExtra("name", data.getExtras().getString("name"));
        intent.putExtra("id", data.getExtras().getString("id"));
        setResult(Activity.RESULT_OK, intent);
        finish();
    }
}
说明:


SecondActivity
的结果将传递给
FirstActivity
,而
FirstActivity
的结果将传递给
FragmentActivity
通过调用将活动结果值从一个活动传递到另一个片段->

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == MY_REQUEST_CODE_TWO) {
        Intent intent = new Intent();
        intent.putExtra("name", data.getExtras().getString("name"));
        intent.putExtra("id", data.getExtras().getString("id"));
        setResult(Activity.RESULT_OK, intent);
        finish();
    }
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
            for (Fragment fragment : getSupportFragmentManager().getFragments()) {
                if (fragment != null) {
                    fragment.onActivityResult(requestCode, resultCode, data);
                }
            }
    }
}
然后在片段中调用活动结果

 @Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.e("onF**kingHere*frg", String.valueOf(requestCode) + " " + resultCode);
}

如果我理解正确的话,您需要的是第二个活动中的一些数据,返回到片段。对??是的……我希望它在onActivityResult中对fragment进行更改。还有一件事,您希望在onActivityResult的fragment方法中得到结果有什么具体原因吗??当您从Activity2返回到片段时,您可以轻松地对片段进行必要的更改。