从存储的数组中随机选择editText视图内容

时间:2017-05-03 17:00:42

标签: java android android-studio dynamic

基本上我要完成的是将editText视图存储在数组中并返回随机选择的数组元素的值。 editText视图可以动态添加和删除,因此我不得不考虑到这一点。我已经克服了我的方法,无法找到我的错误。

问题是getAnswer()。目前这正在崩溃应用程序

爪哇:

公共类MainActivity扩展AppCompatActivity {     private LinearLayout mEditTextContainer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mEditTextContainer = (LinearLayout)findViewById(R.id.linearLayoutDecisions);
    setContentView(activity_main);

    //Button to choose random editText contents
    final Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             getAnswer();
        }
    });

    //Button to add editText Field
    final Button add_button = (Button) findViewById(R.id.add_button);
    add_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Add_Line();
        }
    });

    //Button to remove editText Field
    final Button remove_button = (Button) findViewById(R.id.remove_button);
    remove_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Remove_Line();
        }
    });
}


public void Add_Line() {
    LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayoutDecisions);
    // add edittext
    EditText et = new EditText(this);
            LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
    et.setLayoutParams(p);
    et.setText(null);
    et.setHint("Enter Answer #" + (mEditTextContainer.getChildCount()+1));
    et.setGravity(Gravity.CENTER);
    mEditTextContainer.addView(et);
}

public void Remove_Line() {
    int count = mEditTextContainer.getChildCount();

    if(count == 2)
        return;
    else
        mEditTextContainer.removeViewAt(mEditTextContainer.getChildCount()-1);
}


public void getAnswer() {
    //get number of possible answers
    int count = mEditTextContainer.getChildCount();

    //create array to hold answers
    String[] options = new String[count--];

    //create temporary view to store editText view contents
    View tempView;

    //Loop to collect and store editText contents
    for(int i = 1; i < count-1; i++) {
       tempView = mEditTextContainer.getChildAt(i);
       if(tempView instanceof EditText){
           String tempText = ((EditText) tempView).getText().toString();
                if(tempText != null){
                    options[i] = tempText;
                }
                else
                    return;
       }
    }

    int number = (int)(Math.random() * count-1);
    String answer = options[number];
    TextView answerBox = (TextView)findViewById(R.id.textView7);
    answerBox.setText(answer);
}
}

1 个答案:

答案 0 :(得分:0)

对于任何好奇的人,我找到了答案。在我的方法中,变量'count'不应该减1。改变这个固定了整个事情。