2017-05-02 17 views
0

強いテキストアプリケーションには画像が含まれており、画像を壁紙として設定するためにクリックすると画像をアクティビティに使用したいと思います。BitmapをFragmentからActivityに渡す方法は?

フラグメントから:

@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を取得しなければならないか、またはあなたはビットマップに変換し、ImageViewのに設定されているURIいるの。 インターフェイスコールバックを使用して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 =ビットマップ; } '私は' case R.id.setForce: を設定するためにクリックすると、パスビットマップのために新しいTaskSetWallpaper(PreviewActivity.this).execute(mBitmap); break; ' –

関連する問題