rezak90 писал(а):В активити:
[syntax=java]Bundle bundle = new Bundle();
bundle.putString(MyFragment.NEWS_ID, newsId);
ft.replace(R.id.flHome, MyFragment.newInstance(bundle), MyFragment.TAG);
ft.addToBackStack(CommentFragment.TAG);
ft.commit();[/syntax]
В фрагменте:
[syntax=java]public static MyFragment newInstance(Bundle bundle)
{
MyFragment f = new MyFragment();
f.setArguments(bundle);
return f;
}[/syntax]
Во фрагменте вытаскиваем значения так:
[syntax=java]getArguments().getString(NEWS_ID);[/syntax]
Вот код, подскажите как сделать
Первый Activity:
[syntax=java]
public class CategoryActivity extends Activity {
private ListView categoryList;
private ArrayAdapter<String> adapter;
private String[] nameCategory;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_category);
categoryList = (ListView) findViewById(R.id.listCategory);
nameCategory = getResources().getStringArray(R.array.name_category);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nameCategory);
categoryList.setAdapter(adapter);
categoryList.setOnItemClickListener(new ListViewClickListener());
getActionBar().setDisplayHomeAsUpEnabled(true);
}
private class ListViewClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//нужно передать int position в класс PageFragment
//и запустить PhraseActivity
}
}
}
[/syntax]
Второй Activity:
[syntax=java]public class PhraseActivity extends FragmentActivity {
static final int PAGE_COUNT = 6;
ViewPager pager;
PagerAdapter pagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_phrase);
pager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PageFragment.newInstance(position);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
}
}[/syntax]
Класс в который нужно передать int position:
[syntax=java]
public class PageFragment extends Fragment {
static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
int pageNumber;
String text;
public static PageFragment newInstance(int page) {
PageFragment pageFragment = new PageFragment();
Bundle arguments = new Bundle();
arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
pageFragment.setArguments(arguments);
return pageFragment;
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
//здесь мне нужно int position из первого Activity
String[] a = getResources().getStringArray(R.array.abc);
text = a[pageNumber];
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, null);
TextView tvPage = (TextView) view.findViewById(R.id.tvPage);
tvPage.setText(text);
return view;
}
}[/syntax]