Я использовал этот файл FileSaver.js . В моем случае с файлами csv я сделал это (в coffescript):
$.ajax
url: "url-to-server"
data: "data-to-send"
success: (csvData)->
blob = new Blob([csvData], { type: 'text/csv' })
saveAs(blob, "filename.csv")
Я думаю, что для наиболее сложного случая данные должны обрабатываться должным образом. Под капотом FileSaver.js реализует тот же подход ответа Джонатан Аменд .
Вы можете проверить одно ImageButton
для условия, если оно проверено. Основываясь на этом, вы можете сделать все остальные setChecked()
ложными. Я использовал то же самое для установки значений RadioButtons
.
if (Friends != null) {
Friends.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
friend_source = "Friend";
Newspaper.setChecked(false);
Facebook.setChecked(false);
Zomato.setChecked(false);
RadioSource.setChecked(false);
}
}
});
}
Создайте файл ресурсов, который имеет разные цвета для разных состояний кнопки.
btn_bg_states.xml :
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<shape>
<solid android:color="your_color" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<solid android:color="your_other_color" />
</shape>
</item>
<item>
<shape>
<solid android:color="your_default_color" />
</shape>
</item>
</selector>
затем установите его в качестве фона, который можно будет нарисовать для всех кнопок, а Android позаботится об остальном.
android:background="@drawable/btn_bg_states"
@OnClick({R.id.next,R.id.country_us,R.id.country_india})
public void nextClicked(View view)
{ switch(view.getId()) {
case R.id.next:
Intent intent = new Intent(this, TutorialScreen.class);
intent.putExtra("country_selected", ind_sel);
startActivity(intent);
break;
case R.id.country_india:
ind_sel=true;
setselectedBlank();
view.setBackgroundResource(R.drawable.selected_border);
break;
case R.id.country_us:
ind_sel=false;
setselectedBlank();
view.setBackgroundResource(R.drawable.selected_border);
break;
}
}
private void setselectedBlank() {
country_us.setBackgroundResource(R.drawable.border);
country_india.setBackgroundResource(R.drawable.border);
}
Вы можете попробовать это просто вызвать метод, чтобы сначала изменить фон для всех по умолчанию, а затем изменить его на выбранный цвет.
Обратите внимание, что здесь используется библиотека инъекций ButterKnife, но даже если вы этого не делаете его использование не проблема Happy Coding
ImageButton spaces = findViewById(R.id.spaceship);
spaces.setBackgroundColor(Color.TRANSPARENT);
spaces.setOnClickListener(view -> {
setAllnotSelected();
spaces.setBackgroundColor(Color.DKGRAY);
});
ImageButton mask = findViewById(R.id.mask);
mask.setBackgroundColor(Color.TRANSPARENT);
mask.setOnClickListener(view -> {
setAllnotSelected();
mask.setBackgroundColor(Color.DKGRAY);
});
public void setAllnotSelected();
{
mask.setBackgroundColor(Color.TRANSPARENT);
spaces.setBackgroundColor(Color.TRANSPARENT);
}