В этой программе я хочу удалить 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>




Вы можете попробовать сохранить логическое значение в 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);
}
});
}
Чтобы добавить к этому, если вы только иногда показываете представление и никогда не хотите показывать его снова после некоторого действия, вам следует взглянуть на использование ViewStub и инвертировать свою логику так, чтобы «если кнопка еще не была нажата, раздуть представление, в противном случае ничего не делать".
Приятно знать, что это помогло!
Спасибо! Работал отлично