Android:点击按钮后错误传输数据

时间:2014-01-09 16:56:38

标签: android

您好,我是Android编程新手

我正在尝试创建一个应用程序,用户单击第一页上的按钮 按钮中的文本颜色会更改颜色,更改会反映在另一个活动页面中。

要做到这一点,我有 1)一个片段类(BookLockerFragment),它引用包含按钮的xml文件 2)父活动文件(TabActivity.java) 3)反映变化的活动文件(complainResponse.java)

这是代码:     LodgeComplaintFragment.java

ArrayList<String>userSelectedOptions = new ArrayList<String>();
 if(btnSis.getCurrentTextColor()==Color.BLUE){
userSelectedOptions.add("SIS");
 }
 Button but = (Button) root.findViewById(R.id.searchButton);
    .....   
    but.setOnClickListener(new View.OnClickListener(){

    @Override
    public void onClick(View v) {
        buttonListener.onMakeBookingButtonPressed(userSelectedOptions);
    }
});

    TabMainActivity.java
   public void onMakeBookingButtonPressed(ArrayList<String> list) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(TabMainActivity.this,  

                     complainResponse.class);
                intent.putStringArrayListExtra("userSelectOptions",list);
                startActivity(intent);
            }


 complainResponse.java
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Get the message from the intent
    Intent intent = getIntent();
    setContentView(R.layout.complainresponse);

    userInput = intent.getStringArrayListExtra("userSelectOptions");
    // Creates the window used for the UI

    if (userInput != null) {
        if (userInput.get(0) != null) {
            textview1 = (TextView) findViewById(R.id.textView1);
            textview1.setText(userInput.get(0));
        }
    }

}

此行发生错误:       if(userInput!= null){       // of complainResponse.java

logcat的: java.lang.IndexOutOfBoundsException

请帮忙

2 个答案:

答案 0 :(得分:0)

您传递给活动的ArrayList中没有任何内容。 我怀疑这段代码没有被执行 -

if(btnSis.getCurrentTextColor()==Color.BLUE){
  userSelectedOptions.add("SIS");    <------------ never gets here
}

要验证这一点,请在调试模式下运行应用程序,并在if语句中放置一个断点

答案 1 :(得分:0)

userInput.get(0) != null

这是我认为错误的原因,列表可以初始化但是空。

相反你应该使用,

 if (!userInput.isEmpty())