0

radiobutton当用户点击后退键然后返回活动时,我无法保存选定的状态。我的课扩展了ListActivity。这是onCreate创建.onBackPressed()listview

@Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.profile_manager);

    dataInfo = new HandleData(ProfileMaker.this);

    dataInfo.open();

    people = dataInfo.getAllComments();

    userAdapter = new ArrayAdapter<People>(ProfileMaker.this, android.R.layout.simple_list_item_single_choice, people);

    setListAdapter(userAdapter);


    registerForContextMenu(getListView());

    addUser = (Button) findViewById(R.id.buttonAddUser);
    graphUser = (Button) findViewById(R.id.buttonGraph);

    addUser.setOnClickListener(this);
    graphUser.setOnClickListener(this);

    idSharing = getSharedPreferences(idPref, 0);
    nameSharing = getSharedPreferences(namePref, 0);
    ageSharing = getSharedPreferences(agePref, 0);
    weightSharing = getSharedPreferences(weightPref, 0);
    genderSharing = getSharedPreferences(genderPref, 0);

    otherName = getSharedPreferences(nameThere, 0);
    otherAge = getSharedPreferences(ageThere, 0);
    otherWeight = getSharedPreferences(weightThere, 0);
    otherGender = getSharedPreferences(genderThere, 0);
}


    @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();

    Intent newIntent = new Intent(ProfileMaker.this, Monitor.class);
    startActivity(newIntent);
}

每当我按下主页按钮并返回应用程序时radiobutton,我选择的那个仍然被选中,但是当我按下返回键去上一个活动然后回到这个活动时,radiobutton没有被选中。如何保存先前选择的状态radiobutton?这些radiobuttons在一个radiogroup. 非常感谢任何帮助。谢谢。

编辑:好的,这就是我得到的。

public class AdapterClass extends ArrayAdapter<People>{

private final List<People> list;
  private final Activity context;

  public AdapterClass(Activity context, List<People> list) {
    super(context, R.layout.profile_manager, list);
    this.context = context;
    this.list = list;
  }

  static class ViewHolder {
    protected TextView text;
    protected RadioButton radioButton;
      RadioGroup group;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;
    if (convertView == null) {
      LayoutInflater inflator = context.getLayoutInflater();
      view = inflator.inflate(R.layout.button_layout, null);
      final ViewHolder viewHolder = new ViewHolder();
      viewHolder.text = (TextView) view.findViewById(R.id.label);

      viewHolder.radioButton = (RadioButton) view.findViewById(R.id.check);
      viewHolder.radioButton
          .setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
              People element = (People) viewHolder.radioButton
                  .getTag();
              element.setSelected(buttonView.isChecked());

            }
          });
      view.setTag(viewHolder);
      viewHolder.radioButton.setTag(list.get(position));
    } else {
      view = convertView;
      ((ViewHolder) view.getTag()).radioButton.setTag(list.get(position));
    }
    ViewHolder holder = (ViewHolder) view.getTag();
    holder.text.setText(list.get(position).getName());
    holder.radioButton.setChecked(list.get(position).isSelected());
    return view;
  }

当它实际上选择了一个单选按钮时,我很兴奋。但问题是它只选择列表中的第一个按钮,即使我取消选择它并选择了另一个项目。此外,它让我可以选择多个我不想要的单选按钮。我错过了什么?

4

2 回答 2

0

制作一个布尔数组并用假值填充它作为单选按钮的数量。现在,当您单击单选按钮时,如果它是假的,则将该索引设为真,如果再次单击,则将其设为假。使用您自己的列表适配器,它将为您提供更多帮助。我在复选框的情况下做了类似的事情,您可以在 getView 中看到我的帖子Unable to check/uncheck CheckedTextView。如果这对你有帮助,请回复我...

于 2012-12-28T09:34:12.963 回答
0

按下后退键时,您正在使用意图导航时失去无线电组的状态,因此活动重新初始化(即再次进入屏幕时,它将从 oncreate 开始),您需要向您的意图添加额外内容发送给您单选按钮状态

像这样的例子

 @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();

    Intent newIntent = new Intent(ProfileMaker.this, Monitor.class);
newIntent.putExtra("somename",state of the radiobutton);
    startActivity(newIntent);
}

并且在ProfileMaker活动检查中是否有任何额外的,如果有额外的获取并根据该选择单选按钮。

if (getIntent().getExtras().getString("yourextraname") != null)
            applicant = getIntent().getExtras().getString("applicant");
于 2012-12-28T09:50:10.283 回答