我如何将按钮连接到对话框,这将在框架布局中更改文本视图?

问题描述 投票:0回答:1

我将尽力以最少的可重复代码来询问我的问题。

我想单击TITLE按钮时,弹出一个DialogFragment,要求用户输入情绪板的标题。用户输入标题。当单击PostiveButton“完成”时,用户的标题设置在情绪面板的左上方。

请!提出问题,因为我不太了解对话框的设置,也不知道如何将对话框设置得尽可能小。

这里是我的main_layout的图片。每个元素都有一个“ @ + id /”。

enter image description here

这是我的MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  //----- Bottom Constraint Layout & Frames -----
  btnThemeListener();

  //Top Left Frame: Mood Board Title
  topLeftFrame = findViewById(R.id.topLeftFrame);
  tvUserTitle = findViewById(R.id.tvTopLeftFrame);

  FragmentTransaction fragmentTransaction = 
    getSupportFragmentManager().beginTransaction();
  TitleEditorDialog titleEditorDialog = new TitleEditorDialog();
  fragmentTransaction.add(tvUserTitle.getId(), titleEditorDialog);
  fragmentTransaction.commit();
}

private View.OnClickListener editTitleClickedListener = new 
  View.OnClickListener() {
    @Override
    public void onClick(View view) {
      FragmentManager fragmentManager = getSupportFragmentManager();
      TitleEditorDialog titleEditorDialog = new TitleEditorDialog();

      //This doesn't seem right, wouldn't this cause an infinity loop
      titleEditorDialog.setTargetFragment(titleEditorDialog, 
         TITLE_EDITOR_REQUEST);
      titleEditorDialog.show(fragmentManager, "TITLE_DIALOG_EDITOR");
    }
  };

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable 
  Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(requestCode==RESULT_OK && requestCode==THEME_PICKER_REQUEST){
    if(data != null && data.getExtras() != null){
      Bundle themeBundle = data.getExtras();
      int baseColor = themeBundle.getInt("BASE_CODE");

      moodBoard = findViewById(R.id.moodBoard);
      moodBoard.setBackgroundColor(baseColor);
  }else if(resultCode == TITLE_EDITOR_REQUEST && requestCode == RESULT_OK){
    tvUserTitle.setText(data.getStringExtra(TitleEditorDialog.EXTRA_TITLE));
  }
}

}

这是我的TitleEditorDialog类

  public static final String EXTRA_TITLE = "?";

  private EditText titleText;

  @NonNull
  @Override
  public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    Context context = getActivity();

    LinearLayout linearLayout = new LinearLayout(context);
    linearLayout.setOrientation(LinearLayout.VERTICAL);
    linearLayout.setBackgroundColor(Color.parseColor("#868b8e"));

    titleText = new EditText(context);
    titleText.setHint("Enter Title Here");

    linearLayout.addView(titleText);

    return new AlertDialog.Builder(context)
      .setTitle("Mood Board Title Editor")
      .setView(linearLayout)
      .setPositiveButton("Done", doneClickedListener)
      .create();
  }

  private void sendResult(int resultCode){
    if(getTargetFragment() == null){
      //Test: if there is a target before sending data to it
    }else {
      Intent intent = new Intent();
      intent.putExtra("TITLE_CODE", titleText.getText().toString());
      getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent);
    }
  }

  private DialogInterface.OnClickListener doneClickedListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
      sendResult(Activity.RESULT_OK);
    }
  };
java android xml android-dialogfragment
1个回答
0
投票
final EditText edittext = new EditText(MainActivity.this); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage("Input Title") .setView(edittext) .setCancelable(false) .setPositiveButton("Confirm", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { YourCustomDialog.your_title_textviewMoodboard.setText(edittext.getText().toString()); } }) .setNegativeButton("Back", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); AlertDialog alert = builder.create(); alert.show();

在您的自定义对话框中。全局声明您的textview静态

public static TextView your_title_textviewMoodboard;
© www.soinside.com 2019 - 2024. All rights reserved.