Как удалить линейный макет навсегда?

В этой программе я хочу удалить ll2 (LinearLayout) при нажатии mButton. Т.е. я не хочу, чтобы этот макет появлялся во второй раз, когда я вхожу в это действие. Когда я нажимаю кнопку, макет исчезает, пока я нахожусь в действии, но когда я возвращаюсь к действию, макет присутствует.

Как мне удалить его навсегда? Заранее спасибо!

LinearLayout ll,ll2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    location_btn = (Button)findViewById(R.id.location_btn);
    menu_btn = (Button)findViewById(R.id.bt_menu);
    mButton = (Button) findViewById(R.id.buttone);
    mEdit = (EditText) findViewById(R.id.edittexte);
    ll2 = (LinearLayout)findViewById(R.id.llayout);

    mButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            number = mEdit.getText().toString();
            mEdit.setText("");
            ll2.setVisibility(View.GONE);
            ll2.removeAllViewsInLayout();
        }
    });
}

Мой файл макета

<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:orientation = "horizontal"
    android:id = "@+id/llayout"
    android:visibility = "visible">

    <EditText
        android:id = "@+id/edittexte"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_weight = "1"
        android:ems = "10"
        android:inputType = "textPersonName"
        android:text = "Name" />

    <Button
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_weight = "1"
        android:text = "SAVE"
        android:id = "@+id/buttone"/>

</LinearLayout>
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
47
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете попробовать сохранить логическое значение в SharedPreferences ... Например, В начале оставьте логическое значение false.

Как только вы нажмете кнопку, удалите View (LinearLayout), измените логическое значение на true и сохраните его в SharedPreferences ...

В onCreate () попробуй как

if (booleanisTrue) {
   ll2.setVisibility(View.GONE);
   ll2.removeAllViewsInLayout();
 }
Ответ принят как подходящий

Просто сохраните SharedPreference и сохраните состояние, в котором вы нажали кнопку ранее. Затем каждый раз, когда вы входите в действие, проверяйте значение, хранящееся в вашем SharedPreference, и, если будет обнаружено, что кнопка уже была нажата раньше, просто скройте LinearLayout.

LinearLayout ll,ll2;
SharedPreference pref; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    pref = getSharedPreferences("MyApplication", Activity.MODE_PRIVATE);

    location_btn = (Button)findViewById(R.id.location_btn);
    menu_btn = (Button)findViewById(R.id.bt_menu);
    mButton = (Button) findViewById(R.id.buttone);
    mEdit = (EditText) findViewById(R.id.edittexte);
    ll2 = (LinearLayout)findViewById(R.id.llayout);

    // Check the preference value when activity is launched each time and hide of the button was pressed before
    if (pref.getBoolean("ButtonPressed", false)) ll2.setVisibility(View.GONE);

    mButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            number = mEdit.getText().toString();
            mEdit.setText("");
            // Save the sate of the button pressed in the SharedPreference
            pref.edit().putBoolean("ButtonPressed", true).apply();

            ll2.setVisibility(View.GONE);
        }
    });
}

Спасибо! Работал отлично

Ria 22.04.2018 19:32

Чтобы добавить к этому, если вы только иногда показываете представление и никогда не хотите показывать его снова после некоторого действия, вам следует взглянуть на использование ViewStub и инвертировать свою логику так, чтобы «если кнопка еще не была нажата, раздуть представление, в противном случае ничего не делать".

dominicoder 22.04.2018 19:40

Приятно знать, что это помогло!

Reaz Murshed 22.04.2018 20:24

Другие вопросы по теме