Я все еще новичок в java и android studio. Я хочу знать, есть ли способ получить доступ к макету в другом действии.
Я хочу иметь возможность изменить фоновое изображение моего основного действия с помощью другого действия. Таким образом, в моем основном действии есть кнопка, которая направит их к новому действию, и в этом новом действии есть несколько кнопок, которые будут настраивать фоновое изображение основного действия. (в основном нажмите кнопку, и фон изменится).
В моем main.xml я получил макет ограничения. Как мне получить доступ к этому макету ограничения в другом классе Java?
Если ваше первое действие все еще активно, вы можете отправить сообщение из второго действия в первое действие через интерфейс или шину событий или даже данные в реальном времени.
Я думаю, ты не можешь этого сделать. Что вам нужно, так это передать некоторые данные в действие, которое вы хотите настроить из своего действия по настройке с намерением. Другой способ - вы можете использовать фрагменты, например DialogFragment, который просто прикреплен к вашей основной активности, чтобы вы могли его изменить.
Спасибо! Я думаю, я использую диалоговое окно тогда :)
Я только что попробовал, и это сработало T_T tysm, ты сохранил мой проект!!
@cupcake, вы можете получить доступ к объекту, но вы должны создать имя объекта как статическое. и вызов из NewActivity Но ваше представление может быть нулевым, если вы не вызовете findViewbyId! Вот и пример: ГлавнаяДеятельность
static TextView mTextViewTv;
static ConstraintLayout mLayoutCl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewTv = findViewById(R.id.helloWorldTv);
mLayoutCl =findViewById(R.id.mLayout);
mTextViewTv.setOnClickListener(v -> startNewActivity());
}
private void startNewActivity() {
startActivity(new Intent(MainActivity.this,NewActivity.class));
}
Новая активность
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
//you can call in on click, **Becareful with NUll expection**
//this is just example
MainActivity.mLayoutCl.setBackgroundColor(getResources().getColor(R.color.black));
}
Этот тип метода НЕ РЕКОМЕНДУЕТСЯ
да, я могу получить к нему доступ, но он по-прежнему не меняет фон, я думаю, это бесполезно T_T, спасибо
ооо, а мой может измениться,
@cupcake Фон не изменился, потому что, когда вы вернетесь к предыдущему действию, будет вызван метод onCreate () этого действия, и все будет повернуто в исходное положение.
Я тоже много исследовал эту вещь, но безрезультатно. Вывод, к которому я пришел, заключался в том, что класс может получить доступ только к тем виджетам, которые присутствуют в макете, который он расширяет.