MainActivityのFragment(TrainerSettings
)のボタンをクリックするとDialogFragment(SettingsBackImageDialog
)が開きます。 SettingsBackImageDialog
にはいくつかのボタンがあり、そのうちの1つは撮影のためのもので、フラグメントのImageview(trainersettingsmainicon
)に設定されています。ダイアログのAndroid onActivityResult
私はでTrainerSettings
でSettingsBackImageDialog
を開く:
public void onViewCreated (View view, Bundle savedInstanceState) {
view.findViewById(R.id.trainersettingsbackgroundbtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showEditbackImageDialog();
}
});
}
private void showEditbackImageDialog() {
android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();
SettingsBackImageDialog settingsBackImageDialog = SettingsBackImageDialog.newInstance("Wybierz pierwszy kolor");
settingsBackImageDialog.show(fm, "SettingsBackImageDialog");
}
SettingsBackImageDialog
から私のコードは次のとおりです。
MainActivity
で
public class SettingsBackImageDialog extends DialogFragment {
int REQUESTCODE=1;
public SettingsBackImageDialog() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.settingsbackgroundimgdialog, container);
}
@Override
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
view.findViewById(R.id.takephotobtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, REQUESTCODE);
}
});
String title = getArguments().getString("txt", "txt");
getDialog().setTitle(title);
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(getActivity(), "before", Toast.LENGTH_LONG).show();
if(requestCode==REQUESTCODE & resultCode== Activity.RESULT_OK){
Bundle bundle = new Bundle();
bundle = data.getExtras();
Bitmap bitmap = (Bitmap)bundle.get("data");
ImageView img = (ImageView) getActivity().findViewById(R.id.trainersettingsmainicon);
img.setImageBitmap(bitmap);
Toast.makeText(getActivity(), "in", Toast.LENGTH_LONG).show();
}
}
}
:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.MainContainer);
fragment.onActivityResult(requestCode, resultCode, data);
Toast.makeText(getApplicationContext(), "im here", LENGTH_SHORT).show();
}
アプリケーションがカメラを開き、私はpitureを取ることができ、それを "受け入れる"が、何も起こらない。おそらくアプリケーションはonActivityResultメソッドを使用しません(私はこのメソッドでメッセージを書き込もうとしますが、何も起こりません)。 AndroidMonitorで
:
05-09 02:43:50.299 9709-10068/com.hgyghyfghyu.apkana40 W/GooglePlayServicesUtil: Google Play services out of date. Requires 8115000 but found 5089070
05-09 02:43:50.339 9709-9709/com.hgyghyfghyu.apkana40 W/EGL_emulation: eglSurfaceAttrib not implemented
私はアンドロイド携帯電話をエミュレートするためのNOxアプリを使用しています。
問題を解決するにはどうすればよいですか?
だから私はsuper.super.onActivityResult(requestCode、resultCodeが、データ)を使用してください関連これら二つを見てする必要があります
。 MainActivityで 'SettingsBackImageDialog'とonActivityResultでif()を使用していますか? – barmi
いいえ、あなたのMainActivityのonActivityResultで 'super.onActivityResult ...'を呼び出す必要があります。あなたのフラグメントのonActivityResultに既にあるコードは良いです。変更/移動する必要はありません。 – ishmaelMakitla
これは動作しません( 'SettingsBackImageDialog'のonActivityResultはまだ使用されていません)。これはDialogFragmentであり、フラグメントではないという問題はありますか? – barmi