2017-03-13 10 views
1

Profilepictureを前に撮ることができる画像で設定しようとしています。これは断片に起こります。私のコードはアップし、これまでです:Android Studioのフラグメント内の画像を取り込めません

public class ProfileFragment extends Fragment { 

CircleImageView profilepicture; 

private static final int CAM_REQUEST = 1313; 
public ProfileFragment() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_profile, container, false); 

    profilepicture = (CircleImageView) view.findViewById(R.id.profilepicture); 
    return view; 
} 

public void profilepictureOnClick(){ 
    takeNewProfilePicture(); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(resultCode == Activity.RESULT_OK) { 
     if(requestCode == CAM_REQUEST){ 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      profilepicture.setImageBitmap(thumbnail); 
     } 
    } 
} 

private void takeNewProfilePicture(){ 
    Intent cameraintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraintent, CAM_REQUEST); 
} 

} 

私はそのようにこれを実行すると、アプリケーションは、Iピクチャ、「最初の」フラグメント、ないProfilefragmentを受け入れた後、表示され、私はprofilefragmentに戻ったときに、 profilepictureは変更されていません。私はすでにブレークポイントを設定し、デバッグモードでそれを行った:プログラムはブレークポイントで停止しますが、私は "ステップオーバー"をクリックすると、それはリロードのようですが、それはまだ同じブレークポイントにあります...

すべてのアイデア?

答えて

0

次のコードを使用します。実際に何が起こっているのかをここで

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

onActivityResult()はアクティビティによって処理され、次のように)(onActivityResultオーバーライドし、あなたの親アクティビティで

private void takeNewProfilePicture(){ 
    Fragment profileFrag = this; 
    Intent cameraintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    profileFrag.startActivityForResult(cameraintent, CAM_REQUEST); 
} 

を。以前のコードでは、startActivityForResult()を呼び出したとき、Activityは前のフラグメントからの要求を取得していると考えていました。したがって、startActivityForResultがどのフラグメントから呼び出しているかを指定する必要があります。それは上記のコードで行われていることです。

これが役に立ちます。

+0

ちょっと@tahsinRupam、まずはお手伝いをしていただきありがとうございます。私はあなたのコードを使用しましたが、結果は全く同じです – HansKrywaa

+0

メソッドprofilepictureOnClick()が呼び出された場所から。あなたはあなたのアクティビティクラスを提供することができます、それは少し物事をクリアすることがあります。 – tahsinRupam

+0

更新された回答を確認してください。 – tahsinRupam

関連する問題