我试图将数据从活动A到FragmentActivity B的意图传递给片段B.活动A的按钮启动FragmentActivity B.“年份”字符串设置一个过滤器与我查询远程服务器上的mysql数据库。下面的代码工作,但只有一半的时间。片段内的意图只有一半的时间工作
我不知道是什么导致它过滤一些时间,有时它只是返回未经过滤的整个表。我猜它必须与我在片段中使用的意图有关,因为过滤器在没有片段的应用程序版本中没有问题地工作。我将意图从活动A发送到FragmentActivity B到碎片B的方式似乎效率不高。我该如何解决这个问题?
活动答:
Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(FindMovie.this, ShowMovies.class);
intent.putExtra("year", year1);
startActivity(intent);
}
});
FragmentActivity B:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_movies);
if (getSupportFragmentManager().findFragmentByTag(TAG) == null) {
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(android.R.id.content, new ImageGridFragment(), TAG);
ft.commit();
}
Intent i = getIntent();
year = i.getStringExtra("year");
//resend through another intent to the fragment B
Intent intent = new Intent(getApplicationContext(), ImageGridFragment.class);
intent.putExtra("year", year);
}
片段B:
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.image_grid_fragment, container, false);
Bundle extras = getActivity().getIntent().getExtras();
year = extras.getString("year");
return v;
}
多么美妙的答案!非常感谢。它解决了这个问题。 “线程计时问题”是问题所在,我实际上只需将异步任务移动到Bundle extras = getActivity()。getIntent()。getExtras(); \t \t \t \t year = extras.getString(“year”); – Jerome
不客气:D – LuckyMe
LuckyMe,这真的有效。我有一个小问题,我的片段处于可选标签视图,所需片段位于第5个选项卡中。当我使用这个代码时,它直接嵌入第5个屏幕。我如何改变它 –