【问题标题】:creating an object on every click在每次点击时创建一个对象
【发布时间】:2014-03-09 19:25:24
【问题描述】:

有没有办法在用户每次点击某个按钮时创建一个对象?

我创建了一个对象数组作为创建对象的容器 但是程序崩溃了!! 有什么可行的方法吗?

package com.fawzyx.movie_rental_store;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.TextView;
import java.lang.String;

public class MemReg_activity extends Activity{

    public member[] member ;


    String name; 
    String id ;
    String mail;
    String ccard ;
    String address ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.reg_layout);
        final EditText etname = (EditText)findViewById(R.id.etname);
        EditText etmail = (EditText)findViewById(R.id.etmail);
        EditText etid = (EditText)findViewById(R.id.etid);
        EditText etccard=(EditText)findViewById(R.id.etccard);
        EditText etaddress = (EditText)findViewById(R.id.etadress);


        name = etname.getText().toString();
        id = etid.getText().toString();
        mail = etmail.getText().toString();
        ccard = etccard.getText().toString();
        address = etaddress.getText().toString();

        Button btSubmit= (Button)findViewById(R.id.btsubmit);

        btSubmit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
            if (etname.getText().toString().length()<5)
            {
            Toast.makeText(MemReg_activity.this, "Enter a valid name", Toast.LENGTH_LONG).show();   
            }   
            else 
            {
                int x=0;
                x++ ;
                member[x]  = new member(name, id, mail , ccard , address);

            }
            }
        });



    }

}

【问题讨论】:

  • 您正在将新对象添加到您从未初始化过的数组中。这将导致空指针异常。如果你想拥有一组扩展的对象,你应该使用一个列表。
  • @dymmeh 如何制作列表?
  • List memberList = new ArrayList();把它放在 onCreate 然后 onClick 你可以做 memberList.add(your object).

标签: android arrays oop button


【解决方案1】:

成员未在任何地方初始化。

//initialize
member = new member[15]; // 15 is just an example.

另一方面,如果大小不固定,则应考虑改用List

List<member> members = new ArrayList<member>();

在 onclick 方法中,

members.add(new member());

要访问这些项目,

member m = members.get(0); // first item in the list

要迭代所有项目,

   for(member m : members){
      // m is your member object
   }

【讨论】:

  • 有没有办法访问和搜索这个列表?
  • 对不起,我的意思是按对象属性之一搜索
  • 如果对象属性是唯一的,可以使用HashMap或者需要遍历arraylist进行比较
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多