내 영어 용으로 업데이트되었습니다. 내 응용 프로그램에서 Home_Activity에서 Button을 클릭하고 사용자 정의 AlertDialog가 표시됩니다. 이 AlertDialog (DialogAdd) 내에서 ImageView를 클릭하면 iv1 (또는 ImageButton - 둘 다 작동하지 않음)과 다른 사용자 정의 AlertDialog가 열립니다 (선택) - 지금까지는 그렇게 좋습니다. 이제 제 2 AlertDialog를 열고 보았습니다. 4 개의 작은 그림을 말합니다. 이 그림 중 하나를 클릭하면 두 번째 AlertDialog가 닫히고 ImageView (iv1)가 AlertDialog 2에서 선택된 아이콘으로 변경되어야합니다.이 모든 ImageView/ImageButton을 변경하지 않고 실행 중이지만 ... 이 동작을 분리했습니다. 약간의 응용 프로그램에 ..사용자 정의 AlertDialog 내에서 사용자 정의 AlertDialog에서 ImageView를 가져올 수 없습니다.
Home_Activity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Home_Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.btn_showDialog);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogAdd addEntrieActivity = new DialogAdd(Home_Activity.this);
addEntrieActivity.createDialogAdd(Home_Activity.this);
}
});
}
}
DialogAdd
import android.content.Context;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
public class DialogAdd implements View.OnClickListener, Choose.Choose_Interface {
private LayoutInflater inflater;
private View view;
private Context context;
private AlertDialog dialog;
private String selectetSmile = null;
private ImageView ib_dialog_smile;
public DialogAdd(final Context context) {
this.context = context;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.dialog_line, null);
ib_dialog_smile = (ImageView) view.findViewById(R.id.ib_dialog_smile);
ib_dialog_smile.setOnClickListener(this);
}
public void createDialogAdd(Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
builder.setView(view);
dialog = builder.create();
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.show();
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.ib_dialog_smile){
Choose choose = new Choose(context);
choose.createDialogChoose();
}
}
@Override
public void selectedSmile(String smile) {
selectetSmile = smile;
if(selectetSmile.equals("oh")){
ib_dialog_smile.setImageResource(R.drawable.oh);
}else if(selectetSmile.equals("oh_nooo")){
ib_dialog_smile.setImageResource(R.drawable.oh_nooo);
}else if(selectetSmile.equals("oh_what")){
ib_dialog_smile.setImageResource(R.drawable.oh_what);
}else if(selectetSmile.equals("oh_yes")){
ib_dialog_smile.setImageResource(R.drawable.oh_yes);
}
}
}
내가 무효화 ib_dialog_smile 그것을 시도했습니다
public class Choose {
public interface Choose_Interface {
void selectedSmile(String flag);
}
public Choose_Interface mCallback;
private View view;
private Context context;
private LayoutInflater inflater;
private AlertDialog dialog;
private ImageView oh, oh_nooo, oh_what, oh_yes;
public Choose(final Context context) {
this.context = context;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.choose, null);
mCallback = new DialogAdd(context);
oh = (ImageView) view.findViewById(R.id.oh);
oh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.selectedSmile("oh");
Toast.makeText(context, "oh klicked", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
oh_nooo = (ImageView) view.findViewById(R.id.oh_nooo);
oh_nooo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.selectedSmile("oh_nooo");
Toast.makeText(context, "oh_nooo klicked", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
oh_what = (ImageView) view.findViewById(R.id.oh_what);
oh_what.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.selectedSmile("oh_what");
Toast.makeText(context, "oh_what klicked", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
oh_yes = (ImageView) view.findViewById(R.id.oh_yes);
oh_yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.selectedSmile("oh_yes");
Toast.makeText(context, "oh_yes klicked", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
}
public void createDialogChoose() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
builder.setView(view);
dialog = builder.create();
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.show();
}
}
선택, 나는하여 ImageButton 또한 이미지 뷰, AppCompatImageView, setImageDrawable, setImageResource ..하지만 이미지가 업데이트됩니다 didnt는을 사용했다. ib_dialog_smile 이미지를 변경하려면 누군가 도와주세요.
감사합니다.