Изменить элементы макета из другого класса - PullRequest
0 голосов
/ 02 мая 2020

Я студент и новичок в java и android.

Я изменяю приложение android, которое позволяет настраивать маяки Bluetooth. В исходном приложении мы можем настраивать маяки только один за другим, поэтому я хочу изменить приложение, чтобы иметь возможность автоматически настраивать правильное число.

У меня проблема, когда я хочу изменить элемент в макете класса из другого класса.

Из основного класса я могу хорошо взаимодействовать с элементами основного макета. Но, поскольку класс Main, я не могу взаимодействовать с другими макетами (в моем случае это PasswordDialog). Я боролся в течение нескольких дней, пробовал отвечать на похожие посты, но безуспешно, потому что конфигурация моих классов довольно особенный, и я не хочу изменять их слишком сильно, чтобы не изменять функционирование приложения. Если у кого-либо есть какие-либо предложения, я был бы очень признателен;)

Основной класс:

public class MainActivity extends BaseActivity implements RadioGroup.OnCheckedChangeListener, MokoScanDeviceCallback, AdapterView.OnItemClickListener {

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

// ...

}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        // ...
        final PasswordDialog dialog = new PasswordDialog(this); // Another function which already calls the PasswordDialog class which interests me
        dialog.setSavedPassword(mSavedPassword);
        dialog.setOnPasswordClicked(new PasswordDialog.PasswordClickListener() {
        // ...
        }

}   

@OnClick({R.id.iv_about, R.id.iv_refresh, R.id.bt_auto})
public void onClick(View view) {
    switch (view.getId()) {
        // ...
        case R.id.bt_auto: // When I click on the bt_auto button, the code below is executed
            final PasswordDialog dialog = new PasswordDialog(this); 
            dialog.AutoSetPassword("Moko4321"); // the method I'm trying to launch
        // ...
    }
}
// ...

}

Теперь вот класс PasswordDialog, который находится в другом пакете , Я хочу изменить элемент макета набора паролей из моего основного класса:

public class PasswordDialog extends BaseDialog  {
@Bind(R.id.et_password) 
EditText etPassword; // The element that I want to modify

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

// ...

public void AutoSetPassword(String pass) { // My method to modify the EditText
    etPassword.setText(pass); // This does not work
    // and
    ((EditText) findViewById(R.id.et_password)).setText(pass); // If I try this instead, it's the same
}

}

Большое спасибо за вашу помощь:)

...