Я студент и новичок в 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
}
}
Большое спасибо за вашу помощь:)