Назначение ClickListener для кнопки во втором макете - PullRequest
0 голосов
/ 08 июня 2018

Я работаю над проектом для приложения (Android) и использую Android Studio для своей компании.Проблема в том, что я новичок в этом виде программирования.Я пришел из Windows VB и боюсь, что работать в Android Java не так-то просто.

Я уже создал базовый интерфейс для своего приложения и решил создать приложение на основе FrameLayout (простокак Panels в VB).Все идет нормально.

Однако у меня возникают проблемы с назначением ClickListener для Button класса MainActivity, потому что Button не находится в файле activity_main.xml.Позвольте мне показать вам, что я получил до сих пор:

Кулак, который я создал Button и FrameLayout для activity_main.xml файла:

<Button
    android:id="@+id/CO001"
    android:layout_marginLeft="@dimen/campo007_left"
    android:layout_marginTop="@dimen/campo007_top"
    android:layout_width="@dimen/campo007_width"
    android:layout_height="@dimen/campo007_height"
    android:text="@string/co001"
    android:textSize="14sp"
    android:textStyle="bold"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
    android:id="@+id/FR001"
    android:layout_marginLeft="@dimen/field006_l"
    android:layout_marginTop="@dimen/field006_t"
    android:layout_width="@dimen/field006_w"
    android:layout_height="@dimen/field006_h"
    android:layout_marginStart="0dp"
    android:visibility="invisible"
    android:contentDescription="@string/app_name"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

Затем, на MainActivity.java внутриМетод onCreate, я объявил кнопку как bt001 и назначил ей метод setOnClickListener, чтобы показать на этом FrameLayout содержимое другого .xml файла (fr001.xml):

Button bt001 = (Button) findViewById(R.id.CO001);
bt001.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view){
        FrameLayout fr001 = (FrameLayout) findViewById(R.id.FR001);
        fr001.setVisibility(View.VISIBLE);
        fr001.removeAllViews();
        View frcont = getLayoutInflater().inflate(R.layout.fr001, null);
        fr001.addView(frcont);}});

Это прекрасно работает.Почти как Visual Basic.Однако на fr001.xml у меня есть другая кнопка:

<Button
    android:id="@+id/FR001CO001"
    android:layout_width="200dp"
    android:layout_height="130dp"
    android:layout_marginLeft="432dp"
    android:layout_marginTop="54dp"
    android:background="@android:color/holo_red_dark"
    android:text="@string/ModA"
    android:textSize="24sp"
    android:textStyle="bold"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

Когда я попытался назначить ему метод setOnClickListener, приложение вылетает.Я думаю, это потому, что второй .xml файл не «загружен» на MainActivity или что-то в этом роде ...

Я уже пытался связать второй .xml файл с другим действием и запустить его один разВы нажимаете кнопку CO001, но в этом случае второй .xml появляется на исходном FrameLayout и запускается на экране приложения, и я не хочу этого.

Я уверенэта проблема имеет простое решение (а может и нет !!).Ты можешь помочь мне с этим??Любая помощь будет очень ценится.И, как всегда, заранее всем спасибо.

1 Ответ

0 голосов
/ 08 июня 2018

Вы должны получить такую ​​кнопку:

LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.fr001, null); 
Button button = (Button) view.findViewById(R.id.FR001CO001);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...