[英]Android - How to make an intent work from inside a ListView using a custom ArrayAdapter
[英]How to start intent inside custom Listadapter which extends ArrayAdapter
我想开始一项新活动,向某个号码发送短信。 我已经尝试过此代码,但我的活动崩溃了。 我得到 null NullPointerException。 指导我如何善意地开始新的活动。 我还在清单文件中添加了短信权限
public class ListAdapter extends ArrayAdapter<ParseUser> {
private Context context;
public ListAdapter(Context context, int resource, List<ParseUser> user1) {
super(context, resource, user1);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.list_item_layout, null);
}
final ParseUser p = (ParseUser) getItem(position);
if(p!=null){
TextView username = (TextView)v.findViewById(R.id.username);
TextView bloodType = (TextView)v.findViewById(R.id.bloodtype);
//TextView longitude = (TextView)v.findViewById(R.id.longitude);
//TextView latitude = (TextView)v.findViewById(R.id.latitude);
//TextView mobile = (TextView)v.findViewById(R.id.mobile);
Button msgButton = (Button)v.findViewById(R.id.message_me);
final String number = p.getString("Mobile");
if(username!=null){
username.setText(p.getString("Name"));
}
if(bloodType!=null){
bloodType.setText(p.getString("Bloodtype"));
}
msgButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent a = new Intent(getContext(),SmsActivity.class);
a.putExtra("number",number);
context.startActivity(a);
}
});
}
return v;
}
}
你能代替这个吗
public void onClick(View v) {
Intent a = new Intent(this.ListAdapter ,SmsActivity.class);
Intent a = new Intent(getContext(),SmsActivity.class);
改成
Intent a = new Intent(context,SmsActivity.class);
问题在这里: context.startActivity(a);
. 您正在使用context
字段,但从未分配过它。 您可以在构造函数中分配它:
public ListAdapter(Context context, int resource, List<ParseUser> user1) {
super(context, resource, user1);
this.context = context;
}
或者你可以使用getContext()
而不是context
: getContext().startActivity(a);
. 在这种情况下,您完全不需要context
字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.