我很新到Android编程,我无法找出什么是接受的方式达到我的目标是:用单选按钮控制变量的最佳方法是什么?
我有一个变量在我的主要活动(sortOrder
),我想设置在不同的活动中使用单选按钮。目前,我只是用一个大开关的情况下将MainActivity.sortOrder从另一个活动中更改,所以我想知道是否有更优雅的方式。
此外,当我回到MainActivity时单选按钮“忘记”他们的选择。是否可以保存选定的单选按钮,并从MainActivity中设置变量?
下面是一些代码:
在MainActivity
:
public static String sortOrder;
public static int checkedId;
这些给定的值在onCreate
:
sortOrder = ShipContract.ShipEntry.COLUMN_NAME_NAME + " ASC";
checkedId = R.id.sort_name;
这里是OptionsSort
,这是从MainActivity
开始:
public class OptionsSort extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_options_sort);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
RadioButton checkedButton = (RadioButton) findViewById(MainActivity.checkedId);
checkedButton.setChecked(true);
}
public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
switch(view.getId()) {
case R.id.sort_name:
if (checked)
MainActivity.sortOrder = ShipContract.ShipEntry.COLUMN_NAME_NAME + " ASC";
break;
case R.id.sort_date:
if (checked)
MainActivity.sortOrder = ShipContract.ShipEntry.COLUMN_NAME_DATE + " ASC";
break;
case R.id.sort_capacity:
if (checked)
MainActivity.sortOrder = ShipContract.ShipEntry.COLUMN_NAME_CAPACITY + " ASC";
break;
case R.id.sort_line:
if (checked)
MainActivity.sortOrder = ShipContract.ShipEntry.COLUMN_NAME_LINE + " ASC";
break;
case R.id.sort_displacement:
if (checked)
MainActivity.sortOrder = ShipContract.ShipEntry.COLUMN_NAME_DISPLACEMENT + " ASC";
break;
case R.id.sort_speed:
if (checked)
MainActivity.sortOrder = ShipContract.ShipEntry.COLUMN_NAME_SPEED + " ASC";
break;
case R.id.sort_power:
if (checked)
MainActivity.sortOrder = ShipContract.ShipEntry.COLUMN_NAME_POWER + " ASC";
break;
}
RadioGroup radiogroup = (RadioGroup) findViewById(R.id.sort_group);
MainActivity.checkedId = radiogroup.getCheckedRadioButtonId();
finish();
}
}
让我们看看我是否理解你的问题 - 你有2个活动。而在第二个有一个逻辑改变** sortOrder **并基于一个** sortOrder **中的值你想改变一个RadioButton的状态,对吧? –
是的。我现在所做的是将所选RadioButton的ID保存在MainActivity中,并在第二个Activity的onCreate中使用setChecked。但它仍然感觉非常hackish .. – MadTux
是的,它是hackish(没有冒犯)你可以请添加你的代码的问题,所以我们可以有一个更好的看看吗? –