解决方案 »

  1.   

    在跳转的intent里面多加一个传参不行么?我没发现这个问题的点在哪
      

  2.   

    像name、age那样传不行么?还是我理解错了...
      

  3.   

    问题点是    那个id是用户手动输入的,在得到用户输入的id后,去执行根据id查询数据库信息的方法
      

  4.   

     i.putExtra("name",person.getName()); 也这样传递过去,不会报空的
      

  5.   

    public class PersonService {

    private   SQLiteDatabase  db;
    public PersonService(SQLiteDatabase db) {
    super();
    this.db = db;
    }
    /**
     * 添加信息
     */
    public  void  insert(Person  p){
    String  sql = "insert into person(name,age,idcard)  values(?,?,?)";
    db.execSQL(sql, new Object[]{p.getName(),p.getAge(),p.getIDcard()});
    }

    /**
     * 查询信息
     */
    public Person select(int num){
    String sql = "select * from person where id=?";
    Cursor  c = db.rawQuery(sql,new String[]{num+""});
    Person  p = null;
    while(c.moveToNext()){
    num = c.getInt(c.getColumnIndex("id"));
    String name = c.getString(c.getColumnIndex("name"));
    int   age = c.getInt(c.getColumnIndex("age"));
    String   idcard = c.getString(c.getColumnIndex("IDcard"));
    p = new Person(name, age, idcard);
    }
    c.close();
    return  p;
    }
    }int number = 0;
    Intent i = new Intent(MainActivity.this,ShowUserInfoActivity.class);

    //访问本地数据库  获取某一条信息
    Person person = personservice.select(number);
    //Log.i("feng",person.getName()+"--"+person.getAge()+"--"+person.getIDcard());

    i.putExtra("name",person.getName());
    i.putExtra("age", person.getAge());
    i.putExtra("idcard", person.getIDcard());
    i.putExtra("id",number);
    startActivity(i);

    public class ShowUserInfoActivity extends Activity { private  EditText  userid,username,userage,useridcard;
    private   String   name;
    private   int     age;
    private   String   idcard;
    private   int     id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_showuserinfo);
    initEditText();
    Intent  intent = this.getIntent();
     name = intent.getStringExtra("name");
     age = intent.getIntExtra("age",0);
     idcard = intent.getStringExtra("idcard");
     int i = intent.getIntExtra("id",0);
     i = Integer.parseInt(userid.getText().toString().trim());
    } public void initEditText(){
    userid = (EditText) this.findViewById(R.id.et_userid_showinfo);
    username = (EditText) this.findViewById(R.id.et_username_showinfo);
    userage = (EditText) this.findViewById(R.id.et_age_showinfo);
    useridcard = (EditText) this.findViewById(R.id.et_idcard_showinfo);

    }

    public  void btn_select(View v){ username.setText(name);
    userage.setText(age+"");
    useridcard.setText(idcard);
    }
    运行结果求大神解惑
      

  6.   

    不行的话 ,就写一个静态的参数,把num赋值给他,然后要用的时候,去取
      

  7.   

    这个num  要求是用户手动输入一个值,然后将用户输入的值获取,再赋给num的
      

  8.   

    因为你要动态输入得到这个值:1、可以通过一个public static类型的变量存储你输入的ID信息,然后查询的时候读取这个静态变量的值。(缺点:破坏了类的封装性);
    2、也可以通过一个回调接口,接口的参数为你这个num类型的值。(缺点:为了传这一个参数要实现一个接口,麻烦了点)
      

  9.   

    用Intent.putExtra(String name, Parcelable value)把Person对象保存到Intent里不行吗?
    http://developer.android.com/reference/android/os/Parcelable.html