2017-05-02 202 views
0

強文本應用程序有一個包含圖像的片段,我想將圖像傳遞給活動使用位圖,當我單擊以將此圖像設置爲壁紙時。如何將片段從片段傳遞到活動?

片段

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_view_pager, null); 
     ImageView resultView = (ImageView) view.findViewById(R.id.result_image); 

     resultView.setDrawingCacheEnabled(true); 
     bitmap = resultView.getDrawingCache(); 

     resultView.setImageResource(pageNumber); 
     return view; 
    } 

活動,當我點擊設置:

 case R.id.setForce: 

       new TaskSetWallpaper(PreviewActivity.this).execute(bitmap); 

       break; 
+0

你必須得到一些URL或URI,其中您需要將其轉換成位圖,並將其設置爲ImageView的。 通過接口回調將URL/URI傳遞給您的活動,因爲傳遞位圖有時會導致應用程序因內存不足異常而崩潰。 –

+0

@Ajinkya S謝謝,你的回答幫助我更好地瞭解我的問題 –

回答

0

您可以創建在您的片段的接口,該片段的父活動有望實施。然後,您可以將該活動投射到片段的onAttach()的界面中,並在界面中調用方法以通知事件或將數據傳遞給父活動。

片段:

public class MyFragment extends Fragment { 
    private EventListener eventListener; 

    public interface EventListener() { 
     void onSetImage(Bitmap bitmap); 
    } 

    @Override 
    public void onAttach(Activity a) { 
     super.onAttach(a); 
     if (a instanceof EventListener) { 
      eventListener = (EventListener) a; 
     } else { 
      throw new UnsupportedOperationException("Parent activity should implement MyFragment.EventListener"); 
     } 
    } 
} 

父活動:

public class ParentActivity extends AppCompatActivity implements MyFragment.EventListener { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     //--------- 
     //--------- 
    } 

    @Override 
    void onSetImage(Bitmap bitmap){ 
     new TaskSetWallpaper(PreviewActivity.this).execute(bitmap); 
    } 
} 
+0

謝謝!它幫助了我,我只改變@Override public void onSetImage(位圖位圖)mBitmap = bitmap;當我點擊設置'case R.id.setForce: 新的TaskSetWallpaper(PreviewActivity.this).execute(mBitmap); break;' –

相關問題