Rob*_*Rob 1 android android-fragments
我主要是一名学习Android开发和片段的iOS开发人员。我有这个课:
public class MyTableFragment extends ListFragment
{
List<String> dataList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
dataList = new ArrayList<Item>();
dataList.add("Row 1");
dataList.add("Row 2");
dataList.add("Row 3");
dataList.add("Row 4");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(inflater.getContext(),
android.R.layout.simple_list_item_1, dataList);
setListAdapter(adapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id)
{
if(position == 0) {
// What to do here?
// I have a MyNewFragment() class that I want to push
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在基本上onListItemClick我想做这样的事情(这就是我在iOS中所做的事情):
MyNewViewController *newViewController = [[MyNewViewController alloc] init];
[[self.navigationController pushViewController:newViewController] animated:YES];
Run Code Online (Sandbox Code Playgroud)
以前,我在使用Activity时曾在Android中这样使用过:
Intent intent = new Intent(getApplicationContext(), MyNewActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是看起来现在我最好改用Fragments,而且我不知道该怎么做。谢谢
我认为您想在itemClick方法中显示一个新片段。您可以使用类似这样的东西。
FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
Fragment profileFragment = new ProfileFragment();//the fragment you want to show
profileFragment.setArguments(bundle);
fragmentTransaction
.replace(R.id.content_frame, profileFragment);//R.id.content_frame is the layout you want to replace
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
从评论更新:
通常,一个Fragment不应处理将自己替换为另一个Fragment的代码。应该通过与活动进行通信来完成,活动应该对其进行处理。片段应该是自包含的,并且不了解其他片段。如果一个片段具有用另一个特定的片段替换自己的代码,这将意味着该片段将无法按原样重复使用。
| 归档时间: |
|
| 查看次数: |
5070 次 |
| 最近记录: |