2012-11-04 2 views
2

ActionBar의 Action Mode에 표시된 ShareActionProvider을 사용하지 않으려합니다. 하지만ActionBar의 ShareActionProvider 사용 안 함

menu.findItem(R.id.myShareItem).setEnabled(false) 

에서는 사용할 수 없습니다. 나는 무엇인가 놓치고 있거나 그것은 단지 무능력하게 될 수 없다?

UPDATE :

젤리 빈에 대한 테스트는,이 독립 활동 클래스는 문제를 보여줍니다

:

package com.example; 

import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.webkit.MimeTypeMap; 
import android.widget.ShareActionProvider; 
import android.widget.Toast; 

public class MyActivity extends Activity { 

    private MenuItem mShareItem; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     ShareActionProvider sap = new ShareActionProvider(this); 

     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType(MimeTypeMap.getSingleton().getMimeTypeFromExtension("jpg")); 
     sap.setShareIntent(shareIntent); 


     mShareItem = menu.add("Share"); 
     mShareItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
     mShareItem.setActionProvider(sap); 

     MenuItem toggleItem = menu.add("Toggle"); 
     toggleItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     //---shouldn't this work ? ----- 
     mShareItem.setEnabled(!mShareItem.isEnabled()); 

     Toast.makeText(this,mShareItem + " enabled: " + mShareItem.isEnabled(),Toast.LENGTH_SHORT).show(); 

     return super.onOptionsItemSelected(item); 
    } 

} 
+0

흠 ... 나는 그것이 일하기를 기대했을 것입니다. 시각적 효과가 있습니까? LogCat에 기록 된 것이 있습니까? 네이티브 액션 바 (ABS가있는 버그 일 경우)로이 작업을 시도 했습니까? – CommonsWare

+0

로그가 없다면,'MenuItem'은 false로 설정되어 있습니다.하지만 여전히 그것을 클릭 할 수 있습니다. 현재는'ShareIntent' null을 임시 해결책으로 사용하고 있습니다. 이것은'ActionMode'에서 일어납니다. –

+0

그것은 혼란스럽고 b.android.com에서 버그 보고서를 보지 못했습니다. 문제를 보여주는 샘플 프로젝트를 만들 수 있다면 몇 가지 실험을 실행할 수 있습니다 (예 : 기본 액션 바에서 테스트). – CommonsWare

답변

1

그것은 가능성이 버그가 reported here,의를.

현재 해결 방법 : setShareIntent(null)

+1

이 해결 방법은 메뉴가 처음로드 될 때만 작동합니다. 후속로드에서 메뉴는 계속 클릭 가능하며 목록의 항목은 선택할 수 있지만 공유 인 텐트가 null 인 동안 메뉴의 항목은 아무 작업도 수행하지 않습니다. 이것은 메뉴를 볼 수있는 사용자에게는 상당히 좋지 않은 경험이며, 메뉴를 닫을 수는 있지만 그 이후에는 아무 것도 일어나지 않을 것입니다. –

1

다음을 시도 할 수 있습니다 :

setShareIntent(new Intent()); 

이 트릭을 할해야합니다.

+0

이것은 메뉴가 처음로드되었을 때뿐만 아니라'onPrepareOptionsMenu (Menu)'에서 잘 작동합니다. Android 6.0.1. – unrulygnu