2013-05-12 3 views
0

탭 탐색, ViewPager 및 ActionBarSherlock을 사용하는 앱이 있습니다. 내 조각 중 하나에서 의도를 사용하여 사진을 얻을 수 있지만 onActivityResult은 MainActivity에서 호출되며 조각이 아닙니다. MainActivity의 onActivityResult에서 조각을 가져온 다음 onActivityResult 조각을 호출하고 싶습니다.특정 조각 가져 오기

밤새도록 노력했지만 조각을 얻는 방법을 알 수 없습니다.

기본적으로이 같은 일을하고 싶어하지만 난 조각 얻을 수 없습니다

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag("fragment"); 
    if(fragment != null){ 
      fragment.onActivityResult(requestCode, resultCode, data); 
     } 

} 

편집 :

TabsAdapter

public class TabsAdapter extends FragmentStatePagerAdapter implements ActionBar.TabListener , ViewPager.OnPageChangeListener{ 
private final Context mContext; 
private final ActionBar mActionBar; 
private final ViewPager mViewPager; 
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 
private final String TAG = "21st Polling:"; 

static final class TabInfo{ 
    private final Class<?> clss; 
    private final Bundle args; 

    TabInfo(Class<?> _class, Bundle _args){ 
     clss = _class; 
     args = _args; 
    } 
} 

public TabsAdapter(SherlockFragmentActivity fa, ViewPager pager) { 
    super(fa.getSupportFragmentManager()); 
    mContext = fa; 
    mActionBar = fa.getSupportActionBar(); 
    mViewPager = pager; 
    mViewPager.setAdapter(this); 
    mViewPager.setOnPageChangeListener(this); 
} 

public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args){ 
    TabInfo info = new TabInfo(clss, args); 
    tab.setTag(info); 
    tab.setTabListener(this); 
    mTabs.add(info); 
    mActionBar.addTab(tab); 
    notifyDataSetChanged(); 
} 

@Override 
public void onPageScrollStateChanged(int state) { 


} 

@Override 
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 


} 

@Override 
public void onPageSelected(int position) { 
    mActionBar.setSelectedNavigationItem(position); 

} 

public void onTabSelected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction ft) { 
    mViewPager.setCurrentItem(tab.getPosition()); 
    Log.v(TAG, "clicked"); 
    Object tag = tab.getTag(); 
    for (int i = 0; i<mTabs.size(); i++){ 
     if (mTabs.get(i) == tag){ 
      mViewPager.setCurrentItem(i); 
     } 
    } 

} 

public void onTabUnselected(Tab tab, android.support.v4.app.FragmentTransaction ft) { 

} 

public void onTabReselected(Tab tab, android.support.v4.app.FragmentTransaction ft) { 

} 

@Override 
public android.support.v4.app.Fragment getItem(int position) { 
    TabInfo info = mTabs.get(position); 
    return android.support.v4.app.Fragment.instantiate(mContext, info.clss.getName(), info.args); 
} 

@Override 
public int getCount() { 
    return mTabs.size(); 
} 


} 
+0

언제 조각을 추가 했습니까? –

+0

그 일을 처리하는 TabsAdapted라는 클래스가 있습니다. 위에 추가했습니다. –

+0

그리고 MainActivity onCreate()에서 mTabsAdapter.addTab()을 호출합니다. –

답변

1

방법 onActivityResult 양쪽에서 호출됩니다 MainActivity 및 단편이므로 조각을 가져올 필요가 없습니다. startActivityForResult() 메소드에서 사진을 얻으려면 다른 RequestCode를 사용해야하며 MainActivity에서 해당 RequestCode를 사용하지 않도록하십시오.