Как получить “реальное” значение Свойства видимости?

проверить значение состояния usign Log.e (); код работает только тогда, когда значение статуса является успешным, тогда что, если значение статуса не является успешным?

String status = response.body().getStatus();
if(status.equals("success")) 
{
    progressDialog.dismiss();
    Toast.makeText(LoginActivity.this, "Login successfully", Toast.LENGTH_SHORT).show();
    Intent mainIntent = new Intent(LoginActivity.this, DeviceControlActivity.class);
    startActivity(mainIntent);
    finish();
}

Сделайте еще частью для этого и сделайте соответствующий массаж. [ 112]

Я надеюсь, что вы получите точку

11
задан Qwertie 24 December 2008 в 17:25
поделиться

2 ответа

Ну, регулярная реализация действительно проверяет стопку управления, чтобы гарантировать, что все родители видимы. Единственным путем я знаю для уклонения, это должно обмануть с отражением и попросить GetState(2), но это является хрупким:

    // dodgy; not recommended
    Panel query;
    Form form = new Form
    {
        Controls = {
            new Panel {
                Visible = false,
                Controls = {
                    (query = new Panel {Visible = true})
                }
            }
        }
    };
    form.Show();

    // this is the dodgy bit...
    bool visible = (bool)typeof(Control)
        .GetMethod("GetState", BindingFlags.Instance | BindingFlags.NonPublic)
        .Invoke(query, new object[] { 2 });
13
ответ дан 3 December 2019 в 08:06
поделиться

Опция, которая не полагается на отражение, состояла бы в том, чтобы рекурсивно вызвать через родителей иерархии управления, ища один с Видимым набором ко лжи.

Править: См. комментарии для значения кода.

var frm2 = new Form {Text = "Form2"};
var lbl = new Label {Visible = true};
frm2.Controls.Add(lbl);
frm2.Show();

var frm1 = new Form {Text = "Form1"};
var lblVis = new Label { Text = lbl.Visible.ToString(), Left = 10, Top = 10};
lbl.VisibleChanged += (sender, args) => MessageBox.Show("Label Visible changed");
var btnShow = new Button {Text = "Show", Left = 10, Top = lblVis.Bottom + 10};
btnShow.Click += (sender, args) =>
                    {
                        frm2.Visible = true;
                        lblVis.Text = lbl.Visible.ToString();
                        };
var btnHide = new Button {Text = "Hide", Left = 10, Top = btnShow.Bottom + 10};
btnHide.Click += (sender, args) =>
                    {
                        frm2.Visible = false;
                        lblVis.Text = lbl.Visible.ToString();
                    };

frm1.Controls.AddRange(new Control[] {lblVis, btnShow, btnHide});

Application.Run(frm1);

0
ответ дан 3 December 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: