2014-09-18 1 views
0

내 DialogFragment의 MenuItem generateProgress = menu.findItem(R.id.generate_movie); ~ newInstance을 전달해야하며이 경우 Bundle에서 onCreateDialog으로 전달해야합니다. 내가 구축 된 안드로이드 인터페이스를 전달할 수있는 방법안드로이드에서 번들에서 Dialog Fragment로 MenuItem을 전달하는 방법

public void showGifDialog() { 
    DialogFragment newFragment = GenerateGifDialogFragment.newInstance(generateProgress); 
    newFragment.show(getFragmentManager(), "generateGif"); 
} 

public static GenerateGifDialogFragment newInstance(MenuItem generateProgress) { 
    GenerateGifDialogFragment f = new GenerateGifDialogFragment(); 
    Bundle args = new Bundle(); 
    // pass here MenuItem 
    f.setArguments(args); 

    return f; 
} 

? 수업을 만들고 확장해야합니까? 아니면 getActivity()에서 직접 메뉴를 호출하고 Fragment 클래스에서 findingItem을 호출하는 것과 같은 더 나은 방법일까요?

+0

왜 전혀 다른 클래스/조각에의 MenuItem의 ** ** 사본을 전달하려면 어떻게 여기에 예를 들어입니까? – Simas

+0

generateProgress.setActionView (R.layout.actionbar_indeterminate_progress);를 호출하여 실제 아이콘의 위치에로드 아이콘을 표시하고 싶습니다. –

답변

1

내 활동에 메소드를 작성한 다음 getActivity()을 통해 액세스하여 비슷한 결과를 보았습니다.

private boolean mProgressShown; 
private MenuItem mSearchItem; 
private SearchView mSearchView; 
private View mProgressView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Prepare progress layout for usage later 
    mProgressView = LayoutInflater.from(this).inflate(R.layout.progress_icon, null); 
    ... 
} 

public void showProgressIcon() { 
    if (mSearchItem != null && !mProgressShown) { 
     mProgressShown = true; 
     mSearchItem.setActionView(mProgressView); 
    } 
} 

public void hideProgressIcon() { 
    if (mSearchItem != null && mProgressShown) { 
     mProgressShown = false; 
     mSearchItem.setActionView(mSearchView); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    mSearchItem = menu.findItem(R.id.action_search); 
    mSearchView = (SearchView) mSearchItem.getActionView(); 
    ... 
} 

그런 다음 내 조각에서 내가 부를 것이다 : :

((MainActivity)getActivity).showProgressIcon(); 
((MainActivity)getActivity).hideProgressIcon(); 
+0

그것은 통과하고 작동하는 것보다 훨씬 낫습니다. 감사합니다. –

관련 문제