当前位置: 代码迷 >> Android >> android 传参的一个小疑点
  详细解决方案

android 传参的一个小疑点

热度:79   发布时间:2016-04-28 06:14:50.0
android 传参的一个小问题
PersonService类中查询sqlite数据库的某一条信息
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()){
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;
}

Activity中访问数据库查询信息
//创建数据库工具类 对象
dbHelper = new DbHelper(MainActivity.this,"person.db",null,1);
//创建数据库
db = dbHelper.getWritableDatabase();

PersonService  personservice = new PersonService(db);
        int num = 0;
Intent i = new Intent(MainActivity.this,ShowUserInfoActivity.class);

//访问本地数据库  获取某一条信息
Person person = personservice.select(num);
i.putExtra("name",person.getName());
i.putExtra("age", person.getAge());
i.putExtra("idcard", person.getIDcard());
startActivity(i);

ShowUserInfoActivity 显示用户信息,要通过用户输入ID动态查询用户信息
public class ShowUserInfoActivity extends Activity {

private  EditText  userid,username,userage,useridcard;
private   String   name;
private   int     age;
private   String   idcard;
@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");

}

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);
}
}

现在的问题是如何在ShowUserInfoActivity 里面得到那个num参数

求各位大神花点时间帮我看看    谢谢
------解决方案--------------------
像name、age那样传不行么?还是我理解错了...
------解决方案--------------------
不行的话 ,就写一个静态的参数,把num赋值给他,然后要用的时候,去取
------解决方案--------------------
因为你要动态输入得到这个值:

1、可以通过一个public static类型的变量存储你输入的ID信息,然后查询的时候读取这个静态变量的值。(缺点:破坏了类的封装性);
2、也可以通过一个回调接口,接口的参数为你这个num类型的值。(缺点:为了传这一个参数要实现一个接口,麻烦了点)
------解决方案--------------------
用Intent.putExtra(String name, Parcelable value)把Person对象保存到Intent里不行吗?
http://developer.android.com/reference/android/os/Parcelable.html
  相关解决方案