Как показывать только те TextView
, которые нужно?
public class NewAppWidget extends AppWidgetProvider {
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
CharSequence widgetAdr = NewAppWidgetConfigureActivity.loadAdrPref(context, appWidgetId);
CharSequence widgetTime = NewAppWidgetConfigureActivity.loadTimePref(context, appWidgetId);
CharSequence widgetDesc = NewAppWidgetConfigureActivity.loadDescPref(context, appWidgetId);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("chkadr", true)) views.setTextViewText(R.id.appwidget_adress, widgetAdr);
else if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("chktime", true)) views.setTextViewText(R.id.appwidget_time, widgetTime);
else if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("chkdesc", true)) views.setTextViewText(R.id.appwidget_desc, widgetDesc);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
NewAppWidgetConfigureActivity.deleteAdrPref(context, appWidgetId);
NewAppWidgetConfigureActivity.deleteTimePref(context, appWidgetId);
NewAppWidgetConfigureActivity.deleteDescPref(context, appWidgetId);
}
}
}
public class NewAppWidgetConfigureActivity extends Activity {
private static final String PREFS_NAME = ".NewAppWidget";
private static final String PREF_PREFIX_KEY = "appwidget_";
int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
CheckBox chkAdr, chkTime, chkDesc;
public NewAppWidgetConfigureActivity() {
super();
}
static void saveAdrPref(Context context, int appWidgetId, String text) {
context.getSharedPreferences(PREFS_NAME, 0).edit().putString(PREF_PREFIX_KEY + appWidgetId, text).apply();
}
static String loadAdrPref(Context context, int appWidgetId) {
SharedPreferences adr = context.getSharedPreferences(PREFS_NAME, 0);
String titleValue = adr.getString(PREF_PREFIX_KEY + appWidgetId, null);
if (titleValue != null) return titleValue;
else return context.getString(R.string.appwidget_adress);
}
static void deleteAdrPref(Context context, int appWidgetId) {
context.getSharedPreferences(PREFS_NAME, 0).edit().remove(PREF_PREFIX_KEY + appWidgetId).apply();
}
static void saveTimePref(Context context, int appWidgetId, String text) {
context.getSharedPreferences(PREFS_NAME, 0).edit().putString(PREF_PREFIX_KEY + appWidgetId, text).apply();
}
static String loadTimePref(Context context, int appWidgetId) {
SharedPreferences time = context.getSharedPreferences(PREFS_NAME, 0);
String titleValue = time.getString(PREF_PREFIX_KEY + appWidgetId, null);
if (titleValue != null) return titleValue;
else return context.getString(R.string.appwidget_time);
}
static void deleteTimePref(Context context, int appWidgetId) {
context.getSharedPreferences(PREFS_NAME, 0).edit().remove(PREF_PREFIX_KEY + appWidgetId).apply();
}
static void saveDescPref(Context context, int appWidgetId, String text) {
context.getSharedPreferences(PREFS_NAME, 0).edit().putString(PREF_PREFIX_KEY + appWidgetId, text).apply();
}
static String loadDescPref(Context context, int appWidgetId) {
SharedPreferences desc = context.getSharedPreferences(PREFS_NAME, 0);
String titleValue = desc.getString(PREF_PREFIX_KEY + appWidgetId, null);
if (titleValue != null) return titleValue;
else return context.getString(R.string.appwidget_desc);
}
static void deleteDescPref(Context context, int appWidgetId) {
context.getSharedPreferences(PREFS_NAME, 0).edit().remove(PREF_PREFIX_KEY + appWidgetId).apply();
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setResult(RESULT_CANCELED);
setContentView(R.layout.new_app_widget_configure);
chkAdr = (CheckBox) findViewById(R.id.checkBoxAdr);
chkAdr.setChecked(false);
chkTime = (CheckBox) findViewById(R.id.checkBoxTime);
chkTime.setChecked(false);
chkDesc = (CheckBox) findViewById(R.id.checkBoxDesc);
chkDesc.setChecked(false);
findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final Context context = NewAppWidgetConfigureActivity.this;
switch (v.getId()) {
case R.id.checkBoxAdr:
if (chkAdr.isChecked()) {
PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().clear().apply();
PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().putBoolean("chkadr", true).apply();
saveAdrPref(context, mAppWidgetId, getString(R.string.appwidget_adress));
}
break;
case R.id.checkBoxTime:
if (chkTime.isChecked()) {
PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().clear().apply();
PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().putBoolean("chktime", true).apply();
saveTimePref(context, mAppWidgetId, getString(R.string.appwidget_time));
}
break;
case R.id.checkBoxDesc:
if (chkDesc.isChecked()) {
PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().clear().apply();
PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().putBoolean("chkdesc", true).apply();
saveDescPref(context, mAppWidgetId, getString(R.string.appwidget_desc));
}
break;
}
NewAppWidget.updateAppWidget(context, AppWidgetManager.getInstance(context), mAppWidgetId);
setResult(RESULT_OK, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId));
finish();
}
});
Bundle extras = getIntent().getExtras();
if (extras != null) mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) finish();
}
}
P.S. Вроде бы все в жизни попробовал, но Widget для меня стал просто новым космосом.
В связи с этим - Я вообще правильно делаю? или такое нельзя сделать?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть приложения с несколькими экранами и активностямиКак можно сделать так, чтобы открывая активити2 оно не прекращало работу активити1,...
Я получаю значение для spinner из базы данных на сервере и храню его в ArrayList: