Как передать значение переменной из Activity в класс?
Как передать значение переменной из Activity в класс?
Как передать значение переменной из Activity1 в Activity2 понятно, с помощью Intent.
А как передать значение переменной из Activity в класс?
Ситуация такая:
1. Есть Activity1 с ListView, при нажатии на какой то из пунктов, получаем номер позиции нажатого пункта ListView и это значение нужно передать в класс PageFragment, и запускается Activity2.
2. Activity2 унаследован от FragmentActivity и содержит ViewPager, который заполняется с помощью FragmentStatePagerAdapter, сам фрагмент описан в классе PageFragment который унаследован от Fragment. Как передать в класс PageFragment номер позиции нажатого пункта ListView Activity1. Значение это будет задавать условие, какой массив строк будет использовать PageFragment при отображении в Activity2.
А как передать значение переменной из Activity в класс?
Ситуация такая:
1. Есть Activity1 с ListView, при нажатии на какой то из пунктов, получаем номер позиции нажатого пункта ListView и это значение нужно передать в класс PageFragment, и запускается Activity2.
2. Activity2 унаследован от FragmentActivity и содержит ViewPager, который заполняется с помощью FragmentStatePagerAdapter, сам фрагмент описан в классе PageFragment который унаследован от Fragment. Как передать в класс PageFragment номер позиции нажатого пункта ListView Activity1. Значение это будет задавать условие, какой массив строк будет использовать PageFragment при отображении в Activity2.
Re: Как передать значение переменной из Activity в класс?
через Bundle
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Как передать значение переменной из Activity в класс?
А что, геттеры и сеттеры уже вышли из моды? Или фрагмент на момент клика в первой активности не создан?
Re: Как передать значение переменной из Activity в класс?
А можно как то точнее.rezak90 писал(а):через Bundle
Вот первый Activity и его метод отвечающий за нажатие на ListView. Мне нужно запустить с помощью Intent второй Activity, а в класс
PageFragment передать int position. Как это сделать?
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Как здесь это реализовать?
}
Re: Как передать значение переменной из Activity в класс?
В активити:
[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]
[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]
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Как передать значение переменной из Activity в класс?
Вот код, подскажите как сделать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]
Re: Как передать значение переменной из Activity в класс?
не созданno-- писал(а):А что, геттеры и сеттеры уже вышли из моды? Или фрагмент на момент клика в первой активности не создан?
Re: Как передать значение переменной из Activity в класс?
я же показал как передать бандл во фрагмент, на момент создания фрагмента передаётся ему в агрументы бандл
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Как передать значение переменной из Activity в класс?
rezak90 писал(а):я же показал как передать бандл во фрагмент, на момент создания фрагмента передаётся ему в агрументы бандл
По поводу Activity вообще ничего не понятно, где в этом коде передача номера нажатого пункта в ListView?
Посмотрите мой код, двух Activity и класса PageFragment
Если не сложно, покажите как это должно выглядеть в моем коде
Re: Как передать значение переменной из Activity в класс?
massya писал(а):rezak90 писал(а):я же показал как передать бандл во фрагмент, на момент создания фрагмента передаётся ему в агрументы бандл
По поводу Activity вообще ничего не понятно, где в этом коде передача номера нажатого пункта в ListView?
Посмотрите мой код, двух Activity и класса PageFragment
Если не сложно, покажите как это должно выглядеть в моем коде
Помогите, сижу уже не первый день
Re: Как передать значение переменной из Activity в класс?
ПОжалуйста, читай уроки по listview, там есть как достать нажатый номер
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Как передать значение переменной из Activity в класс?
Я знаю как вытянуть нажатый номер и как его передать следующему Activity используяFoenix писал(а):ПОжалуйста, читай уроки по listview, там есть как достать нажатый номер
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bundle bundle = new Bundle();
bundle.putInt(POSITION, position);
intent.putExtras(bundle);
startActivity(intent);
}
Но как его передать в класс PageFragment унаследованный от Fragment?
Re: Как передать значение переменной из Activity в класс?
при помощи Bundle, например
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
