我有2个片段,它们都将意图传递给Activity(通过事件监听器)。活动如何知道这两个片段中的哪一个传递了意图?有一个名为getCallingActivity()
的方法,我需要等效的片段。
我尝试使用onAttachFragment()
方法确定哪个片段调用了Activity,但它不起作用:
public class DetailsActivity extends Activity {
static final String POSITION = "position";
private Movie movie;
private int position;
private static final String TAG = "app";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
}
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
Log.v(TAG, "fragment_src");
position = (int) getIntent().getExtras().get(POSITION);
if (fragment instanceof PopularFragment) {
movie = PopularFragment.movieList.get(position);
setData();
} else if (fragment instanceof TopRatedFragment) {
movie = TopRatedFragment.movieList.get(position);
setData();
}
}
public void setData() {
TextView original_title = (TextView) findViewById(R.id.original_title);
original_title.setText(movie.getOriginal_title());
...
}
}
答案 0 :(得分:1)
你可以发送不同的int值,你的意图是片段和检查你的活动..或者你可以使用
获取你的片段Fragment fragment = getFragmentManager().findFragmentByTag("yourtag");
答案 1 :(得分:0)
为什么不通过Intent本身传递一些参数
对于第一个片段 -
Intent intent=new Intent(getActivity(),DetailsActivity.class);
intent.putExtra("fragName","PopularFragment");
startActivity(intent);
对于第二片段 -
Intent intent=new Intent(getActivity(),DetailsActivity.class);
intent.putExtra("fragName","TopRatedFragment");
startActivity(intent);
在您的活动中
String fragName=getIntent().getStringExtra("fragName");
然后只需使用if..else进行检查。