0

Я работаю с ViewPager i.e над классом MainActivity, а класс Viewpager расширяет фрагмент.Как вернуть «результат» от одного класса до определенного класса?

Проблема заключается в том, что, как правило, когда нам нужен класс, чтобы вернуть некоторые result то при прохождении intent мы используем startActivityforresult(intent,int), следовательно, он передает результат захваченный в secondactivity класс, из которого он был назван.

Но, как я работаю с ViewPager на вершине mainactivity и я использую floating action button, когда я нажимаю на кнопку, чтобы открыть вторую деятельность он возвращает результат в mainactivity, но не класс ViewPager.

Так что мой вопрос, как я могу передать результат, взятый из secondactivity до нужного мне класса?

Update :: MainActivity.java это мой основной класс, который использует намерение, а также получение результата от второго класса активности ActivityTwo

Что я сделал здесь

startActivityForResult(intent,1); 
public void onActivityresult(i,j,intent){MyFragment fragment; 
fragment.onActivityReusult(i,j,intent);//Here i have passes the values  
received by this class to the fragment class where i need the values but it's not working 
} 
+0

вы можете вызвать адаптер просмотра из своей основной деятельности, которая вызовет фрагмент, чтобы передать данные вниз –

+0

да, поскольку я создаю и вызываю класс пейджера в своей основной деятельности – silverFoxA

+0

, поэтому в результате onActivityResult вы можете вызвать viewPageAdapter.passData (мои данные), и пусть это относится к фрагменту. и просто создайте данные прохода в своем адаптере –

ответ

0

Вы можете использовать Bundle. Посмотрите на эту тему: Bundle

bookDescFragment = new BookDescFragment(); 
Bundle args = new Bundle(); 
args.putInt(BookDescFragment.MyVariabl, VariableValue); 
myFragment.setArguments(args); 
0

Лучший способ сделать это, чтобы создать Interface с одним method. Затем фрагмент реализует этот Interface. После этого вы можете назвать это method в onActivityResult. Вы просто получить нужный фрагмент в onActivityResult и вызовите method из его Interface

EDIT:

интерфейс, например:

public interface Interface_example { 

    public void onActivityResult(); 

} 

пример фрагмента:

public class Fragment_example extends Fragment implements Interface_example { 

    @Override 
    public void onActivityResult() { 

     //Here you can do whatever you want 

    } 

} 

например активность:

public class Activity_example extends FragmentActivity { 

    private ArrayList<Fragment> mFragmentList; 
    private ViewPager mViewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_example); 

     mFragmentList = new ArrayList<Fragment>(); 
     mFragmentList.add(new Fragment_example()); 

     mViewPager.setAdapter(new SimpleTabPagerAdapter(
       getSupportFragmentManager(), mFragmentList)); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     Fragment _fragment = mFragmentList.get(mViewPager.getCurrentItem()); 

     if(_fragment instanceof Fragment_example){ 

      // This line will call that method previously created 
      ((Fragment_example) _fragment).onActivityResult(); 

     } 

    } 

} 
+0

Сэр вы можете охарактеризовать его ссылкой на учебник или пример кода или что-то – silverFoxA

+0

Я отредактировал свой ответ. Посмотрите –

+0

, пожалуйста, уточните мой обновленный ответ – silverFoxA

Смежные вопросы