Данные из класса исключению в фрагмент?
Данные из класса исключению в фрагмент?
Стоит вопрос, передать данные с класса исключения где я принимаю SMS и хочу после некоторых операций над тестом передать в один из фрагментов в TextView?
Re: Данные из класса исключению в фрагмент?
Делаю так:
Fragment4 yfc = new Fragment4();
Bundle bundle1 = new Bundle();
bundle1.putString("tag", result1);
yfc.setArguments(bundle1);
Log.d(LOG_TAG,"Содержимое "+ bundle1 + "Результат" + result1);
Это в классе где перехватываю входящее SMS
В bundle1 сожержимое tag значение string приходит!
И уже непосредственно в фрагменте ловлю:
txtsetgd.setText(getArguments().getString("tag"));
Ну нет там ничего к сожалению......
В чем же может быть проблемка???
Fragment4 yfc = new Fragment4();
Bundle bundle1 = new Bundle();
bundle1.putString("tag", result1);
yfc.setArguments(bundle1);
Log.d(LOG_TAG,"Содержимое "+ bundle1 + "Результат" + result1);
Это в классе где перехватываю входящее SMS
В bundle1 сожержимое tag значение string приходит!
И уже непосредственно в фрагменте ловлю:
txtsetgd.setText(getArguments().getString("tag"));
Ну нет там ничего к сожалению......
В чем же может быть проблемка???
Re: Данные из класса исключению в фрагмент?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Данные из класса исключению в фрагмент?
Пока непонятно, прокоментируйте пожалуйста!?
Не могу понять причем тут фрагмент манаджер, я же не с фрагмента данные передавать хочу, у меня этот класс с которого передаю тупо для исключения создать принимать входящий смс.
Не могу понять причем тут фрагмент манаджер, я же не с фрагмента данные передавать хочу, у меня этот класс с которого передаю тупо для исключения создать принимать входящий смс.
Re: Данные из класса исключению в фрагмент?
А где создаете экземпляр вашего вспомогательного класса? возвращать return-м можете?lamberto писал(а):Пока непонятно, прокоментируйте пожалуйста!?
Не могу понять причем тут фрагмент манаджер, я же не с фрагмента данные передавать хочу, у меня этот класс с которого передаю тупо для исключения создать принимать входящий смс.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Данные из класса исключению в фрагмент?
Даю более подробную картину...
Класс для приёма SMS сообщений и дальнейшая обработка.
Класс Фрагмента в который необходимо передать данные
В лог в классе bundle заполняется, но до фрагмента не доходит...
Класс для приёма SMS сообщений и дальнейшая обработка.
Код: Выделить всё
public class IncomingSms extends BroadcastReceiver {
final SmsManager sms = SmsManager.getDefault();
EditText etName;
final String LOG_TAG = "myLogs";
Context context;
DBHelper dbHelper;
SQLiteDatabase db;
Cursor c;
String result1;
String result2;
String result3;
CharSequence Masktemp1 = "WEx0";
CharSequence Masktemp2 = "WEx1";
CharSequence Maskbalance = "Balance:";
FragmentManager fm;
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM HH:mm ");
Date currentDate = new Date();
public void onReceive(Context context, Intent intent) {
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = "5556";
String senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
Log.i("SmsReceiver", "Номер отправителя: " + senderNum + "; Cooбщение: " + message);
// Show alert
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "Номер отправителя: " + senderNum + ", Cooбщение: " + message, duration);
toast.show();
// Создание базы данных!
dbHelper = new DBHelper(context);
ContentValues cv = new ContentValues();
db = dbHelper.getWritableDatabase();
cv.put("sms", sdf.format(currentDate) + message);
c = db.query("mytable", null, null, null, null, null, null);
long rowID = db.insert("mytable", null, cv);
Log.d(LOG_TAG, "row inserted, ID = " + rowID + " Текст: " + sdf.format(currentDate) + message);
c.requery();
dbHelper.close();
if (message.contains(Masktemp1) == true) {
result1 = message.substring(21, 28);
Fragment4 yfc = new Fragment4();
Bundle bundle1 = new Bundle();
bundle1.putString("tag", result1);
Log.d(LOG_TAG,"Содержимое "+ bundle1 + "Результат" + result1);
yfc.getFragmentManager().findFragmentByTag("tag");
yfc.setArguments(bundle1);
}
else if (message.contains(Masktemp2))
result2 = message.substring(22, 29);
else if (message.contains(Maskbalance))
result3 = message.substring(9, 20);
}// end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" + e);
}
}
}Класс Фрагмента в который необходимо передать данные
Код: Выделить всё
public class Fragment4 extends Fragment {
static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
int pageNumber;
String stat;
static Fragment4 newInstance(int page) {
Fragment4 pageFragment = new Fragment4();
Bundle arguments = new Bundle();
arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
pageFragment.setArguments(arguments);
return pageFragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Bundle bundle = getArguments();
if (bundle != null) {
stat = bundle.getString("tag");
}
View view = inflater.inflate(R.layout.fragment4, container, false);
Button btnzb = (Button) view.findViewById(R.id.button9);
Button btnztod = (Button) view.findViewById(R.id.button11);
Button btnztgd = (Button) view.findViewById(R.id.button10);
TextView txtzagb = (TextView) view.findViewById(R.id.zprb);
TextView txtzagt = (TextView) view.findViewById(R.id.zprt);
TextView txtsetb = (TextView) view.findViewById(R.id.setb);
TextView txtsetgd = (TextView) view.findViewById(R.id.setgd);
TextView txtsetod = (TextView) view.findViewById(R.id.setod);
txtsetgd.setText(stat);
Toast.makeText(getActivity(), stat, Toast.LENGTH_SHORT).show();
return view;
}
}
Re: Данные из класса исключению в фрагмент?
ПРобую так
Fragment4 yfc = new Fragment4();
// yfc = (Fragment4) fm.findFragmentByTag(TAG_1);
Bundle bundle1 = new Bundle();
bundle1.putString("tag", result1);
Log.d(LOG_TAG,"Содержимое "+ bundle1 + "Результат " + result1);
yfc.setArguments(bundle1);
// yfc.getFragmentManager();
fm.beginTransaction().replace(R.id.sample_content_fragment, yfc).commit();
НО выскакивает Exception smsReceiverjava.lang.NullPointerException
Fragment4 yfc = new Fragment4();
// yfc = (Fragment4) fm.findFragmentByTag(TAG_1);
Bundle bundle1 = new Bundle();
bundle1.putString("tag", result1);
Log.d(LOG_TAG,"Содержимое "+ bundle1 + "Результат " + result1);
yfc.setArguments(bundle1);
// yfc.getFragmentManager();
fm.beginTransaction().replace(R.id.sample_content_fragment, yfc).commit();
НО выскакивает Exception smsReceiverjava.lang.NullPointerException
Re: Данные из класса исключению в фрагмент?
И вновь пробую уже так....
Fragment4 yfc = new Fragment4();
// yfc = (Fragment4) fm.findFragmentByTag(TAG_1);
Bundle bundle1 = new Bundle();
bundle1.putString("tag", result1);
Log.d(LOG_TAG,"Содержимое "+ bundle1 + "Результат " + result1);
yfc.setArguments(bundle1);
FragmentManager fragmentManager = yfc.getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.RelativeLayout4, yfc).commit();
до сих пор выскакивает NullPointerException что делать мне Help me pls!
Fragment4 yfc = new Fragment4();
// yfc = (Fragment4) fm.findFragmentByTag(TAG_1);
Bundle bundle1 = new Bundle();
bundle1.putString("tag", result1);
Log.d(LOG_TAG,"Содержимое "+ bundle1 + "Результат " + result1);
yfc.setArguments(bundle1);
FragmentManager fragmentManager = yfc.getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.RelativeLayout4, yfc).commit();
до сих пор выскакивает NullPointerException что делать мне Help me pls!
Re: Данные из класса исключению в фрагмент?
по ссылке в подписи
и научись, наконец, код оформлять. Выбирай в редакторе java-5
и научись, наконец, код оформлять. Выбирай в редакторе java-5
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: Данные из класса исключению в фрагмент?
Хорошо логи то посмотрю... обязательно, но ошибка явная т.к. в bundle result1 приходит это видно по логу...
а вот далее либо не могу взять манаджер у фрагмента либо проблема в тразакции и здесь скорее всего фрагмент не пересоздается т.к. не видит id , если я правильно понимаю то id я указываю контейнера layoutа фрагмента в моем случаю это RelativeLayour4..?
а вот далее либо не могу взять манаджер у фрагмента либо проблема в тразакции и здесь скорее всего фрагмент не пересоздается т.к. не видит id , если я правильно понимаю то id я указываю контейнера layoutа фрагмента в моем случаю это RelativeLayour4..?
Re: Данные из класса исключению в фрагмент?
отсылай интентом в активити, а оттуда в фрагмент.lamberto писал(а):Хорошо логи то посмотрю... обязательно, но ошибка явная т.к. в bundle result1 приходит это видно по логу...
а вот далее либо не могу взять манаджер у фрагмента либо проблема в тразакции и здесь скорее всего фрагмент не пересоздается т.к. не видит id , если я правильно понимаю то id я указываю контейнера layoutа фрагмента в моем случаю это RelativeLayour4..?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Данные из класса исключению в фрагмент?
Не пойму как это сделать....
такой конструктор как обычно его рисует Intent sendler = new Intent(context1, MainActivity.class);
sendler.putExtra("FILES_LIST", result1);
context1.startActivity(sendler);
не помогает.
Может пробовать BroadcastReciver использовать?
такой конструктор как обычно его рисует Intent sendler = new Intent(context1, MainActivity.class);
sendler.putExtra("FILES_LIST", result1);
context1.startActivity(sendler);
не помогает.
Может пробовать BroadcastReciver использовать?
Re: Данные из класса исключению в фрагмент?
Тут у меня появился ещё один вопрос т.к. c Активити я могу конечно слать в фрагмент, но т.к.
в onCreate создаётся фрагмент для viewpager
А все остальные фрагменты это классы которые получают position ... ну там понятно...
Тогда как мне обратится из Activity к моему 4 фрагменту думаю что как то через findFragmentByTag, но какой тогда будет Tag??? этого фрагмента, но опять же думаю что типо есть position и он может быть как то связан с Tag моего фрагмента??? короче совсем запутался.....
Выручайте пожалуйста!!! уже 3 день с этой задачей бьюсь.
в onCreate создаётся фрагмент для viewpager
Код: Выделить всё
[syntax=java5]@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
SlidingTabsColorsFragment fragment = new SlidingTabsColorsFragment();
transaction.replace(R.id.sample_content_fragment, fragment); //sample_content_fragment
transaction.commit();
}
}
[/syntax]Тогда как мне обратится из Activity к моему 4 фрагменту думаю что как то через findFragmentByTag, но какой тогда будет Tag??? этого фрагмента, но опять же думаю что типо есть position и он может быть как то связан с Tag моего фрагмента??? короче совсем запутался.....
Выручайте пожалуйста!!! уже 3 день с этой задачей бьюсь.
Re: Данные из класса исключению в фрагмент?
В бродкастРесивере
В активити в онкреэйт:
ВьюПейджер? вот пример адаптера для него:
Кусок активити:
Где-то в фрагменте1:
Код: Выделить всё
String value = "1232131";
String key = "result_string";
Intent intent = new Intent(getApplicationContext(), MyFragmentActivity.class);
intent.putExtra( key, value );
startActivity(intent);
Код: Выделить всё
String key = "result_string";
String value = "default value";
if( getIntent() != null ) {
if( getIntent().getExtras() != null ) {
value = getIntent().getExtras().getString(key, "default value");
}
}
Код: Выделить всё
public class MyFragmentAdapter extends FragmentStatePagerAdapter {
private ArrayList<Fragment> list;
public MyFragmentAdapter(FragmentManager fm, ArrayList<Fragment> list ) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int position) {
return list.get( position );
}
@Override
public int getCount() {
return list.size();
}
}
Код: Выделить всё
public class MyFragmentActivity extends FragmentActivity implements ViewPager.OnPageChangeListener {
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
private ArrayList<Fragment> frList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac_fragment_activity);
mPager = (ViewPager) findViewById(R.id.viewPager);
frList = new ArrayList<>();
frList.add( new MyFragment1() );
frList.add( new MyFragment2() );
frList.add( new MyFragment3() );
mPagerAdapter = new MyFragmentAdapter( getSupportFragmentManager(), frList );
mPager.setAdapter(mPagerAdapter);
((MyFragment1) frList.get(0)).callSomePublicMethod( "some string" ); // публичный метод из фрагмента1
}
//...
}
Код: Выделить всё
public void callSomePublicMethod(String str){
//...
}
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Данные из класса исключению в фрагмент?
почему то метод getApplicationContext() не определяется ....
пайджер реализован уже давно) видимо сбил смысли, извиняюсь...
Вот никак не пойму как с MainActivity передать данные в Fragment4 если тупо в активити указать фрагмент для контейнера дак и создастся только 1 фрагмент. но данные перекидывает... а как, теперь передать в нужный мне фрагмент не понимаю. Щас сдохну уже сутками сижу читаю уже голова вскипает...
пайджер реализован уже давно) видимо сбил смысли, извиняюсь.
Код: Выделить всё
[syntax=java5] @Override
public Fragment getItem(int position) {
mTabsPosition = position;
if (position == 1) {
return Fragment2.newInstance(position);
}
else if (position == 2){
return Fragment3.newInstance(position);
}
else if (position == 3){
return Fragment4.newInstance(position);
}
else
return Fragment1.newInstance(position);
}
[/syntax]Вот никак не пойму как с MainActivity передать данные в Fragment4 если тупо в активити указать фрагмент для контейнера дак и создастся только 1 фрагмент. но данные перекидывает... а как, теперь передать в нужный мне фрагмент не понимаю. Щас сдохну уже сутками сижу читаю уже голова вскипает...
Re: Данные из класса исключению в фрагмент?
Я показывал как, 23 строчка предпоследний кусок с кодомlamberto писал(а):почему то метод getApplicationContext() не определяется ....
пайджер реализован уже давно) видимо сбил смысли, извиняюсь...Код: Выделить всё
[syntax=java5] @Override public Fragment getItem(int position) { mTabsPosition = position; if (position == 1) { return Fragment2.newInstance(position); } else if (position == 2){ return Fragment3.newInstance(position); } else if (position == 3){ return Fragment4.newInstance(position); } else return Fragment1.newInstance(position); } [/syntax]
Вот никак не пойму как с MainActivity передать данные в Fragment4 если тупо в активити указать фрагмент для контейнера дак и создастся только 1 фрагмент. но данные перекидывает... а как, теперь передать в нужный мне фрагмент не понимаю. Щас сдохну уже сутками сижу читаю уже голова вскипает...
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Данные из класса исключению в фрагмент?
1. Не понимаю для чего frList.get(0) если правильно понимаю то frList только для удобства потому как можно явно указать 4 фрагмент, апаблик метод только для того что бы взять стринг?
2. Куда делся replace замещение фрагмента у меня pager хранит странички а не пересоздает?
2. Куда делся replace замещение фрагмента у меня pager хранит странички а не пересоздает?
Re: Данные из класса исключению в фрагмент?
Не катит так к сожалению.... огромная кучка NPE
Re: Данные из класса исключению в фрагмент?
Короче говоря меня проблема уже за..бла............... кучу информации прочитал понял что это проблема, но решения я не нашел. Из всего понял что если фрагмент создаётся динамически, то findFragmentById работает исключительно с контейнером, как правило который содержится в layout в main и работает это если создан 1 фрагмент, а как только появляется FragmentPagerAdapter с замещением фрагмента начинается жопа.... Если кто знает решение проблемы передачи данных из MainActivity в Fragment прикрученный к FragmentPagerAdapter, очень прошу изложите как можно подробнее как все таки это сделать!!!
Re: Данные из класса исключению в фрагмент?
Во, где то нарыл решение определить несколько паблик методов в супер классе FragmentPagerAdapter, которые при определённом position будут записывать TAG фрагменту через FragmеntManager, ну а далее можно будет из класса MainActiviy работать непосредственно с нашими фрагменами воспользовавшись методом findFragmentByTAG...