Есть ли способ получить доступ к объектам Dialog из MainActivity? - PullRequest
0 голосов
/ 27 июня 2019

Я хочу получить доступ к объекту диалога в MainActivity. Например, в MainActivity используйте кнопку, чтобы открыть диалоговое окно.

case R.id.txtCalibMain:
    SubMenu_Calib mCalibDialog = new SubMenu_Calib(instance);
    mCalibDialog.show();
    break;

Таким образом, но на предыдущих шагах, перед диалогом Если вы хотите сохранить текстовое содержимое TextView внутри диалога Как вы можете подойти к этому?

В настоящее время диалог определяется и вызывается с использованием отдельного класса. Я пытаюсь получить к нему доступ извне, поэтому я импортирую нулевое значение или неопределенное TextView. Естественно, что возникнет ошибка.

Код активности диалога

public class SubMenu_Units extends Dialog implements View.OnClickListener {

    public static SubMenu_Units mSubMenu_Units;
    public static MainActivity instance;
    public static List<SingleItem> singleItems;
    static SingleAdapter mSingleAdapter;
    public static TextView mtxtTestMenu;

    public SubMenu_Units(Context context) {
        super(context);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.submenu_units_layout);

        mSubMenu_Units = this;

        initialize();
        mtxtTestMenu = (TextView)findViewById(R.id.txtTestCenterMenu);
    }

    void initialize()
    {
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        setCanceledOnTouchOutside(true);

        ColorDrawable dialogColor = new ColorDrawable(0xFF424957); // 0xFF424957
        getWindow().setBackgroundDrawable(dialogColor);

        mOrientation = getContext().getResources().getConfiguration().orientation;

            WindowManager.LayoutParams mPortrait_params = getWindow().getAttributes();
            mPortrait_params.width = 375;
            mPortrait_params.height = 945;
            mPortrait_params.gravity = Gravity.CENTER | Gravity.LEFT;
            mPortrait_params.x = 5;
            mPortrait_params.y = 68;
            getWindow().setAttributes(mPortrait_params);
    }

1 Ответ

0 голосов
/ 27 июня 2019

У вас должен быть общий класс, в который нужно скопировать код ниже

т.е.; Вам необходимо расширить ниже CurrentActivity с CommonActivity

// В текущей деятельности

  case R.id.txtCalibMain:
       exitAlert("Some Message)
        break;

// Основная деятельность

public void exitAlert(final String message) {

            LayoutInflater inflater = LayoutInflater.from(this);
            View mExitAlertView = inflater.inflate(R.layout.alert_exit_logout_dialog, null);
            final Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setContentView(mExitAlertView);
            dialog.setCanceledOnTouchOutside(true);

            TextView txtAlertMessage = (TextView) mExitAlertView.findViewById(R.id.txtAlertMessage);
            txtAlertMessage.setText(message);

            mExitAlertView.setOnTouchListener((v, event) -> {
                dialog.dismiss();
                return false;
            });

            Button btnExitAlertNo = (Button) mExitAlertView.findViewById(R.id.btnExitAlertNo);
            btnExitAlertNo.setOnClickListener(v -> dialog.dismiss());

            Button btnExitAlertYes = (Button) mExitAlertView.findViewById(R.id.btnExitAlertYes);
            btnExitAlertYes.setOnClickListener(v -> {

                dialog.dismiss();
                Intent startMain = new Intent(Intent.ACTION_MAIN);
                startMain.addCategory(Intent.CATEGORY_HOME);
                startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(startMain);
            });

            dialog.show();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...