Android 通过putExtra将信息传递给intent
嗨,我正在尝试使用put extra,这样我就可以在列表视图中将用户名和位置发送到一个新的意图,但我不确定为什么我的代码不起作用。应用程序已加载,但当我单击listitem时,它停止运行。任何帮助都将不胜感激Android 通过putExtra将信息传递给intent,android,Android,嗨,我正在尝试使用put extra,这样我就可以在列表视图中将用户名和位置发送到一个新的意图,但我不确定为什么我的代码不起作用。应用程序已加载,但当我单击listitem时,它停止运行。任何帮助都将不胜感激 public class MainActivity extends Activity { TextView user; @Override protected void onCreate(Bundle savedInstanceState) {
public class MainActivity extends Activity {
TextView user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user = (TextView) findViewById(R.id.messaging_username);
ListView listView = (ListView) this.findViewById(R.id.messagingListView);
final ActivityAdapter itemAdapter = new ActivityAdapter(getApplicationContext(), this.GetActivityFeedData());
View footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false);
listView.addFooterView(footerView);
listView.setAdapter(itemAdapter);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(getApplicationContext(), ConversationView.class);
intent.putExtra("username", user.getText().toString());
intent.putExtra("pos", position);
startActivity(intent);
}
});
}
// Get dummy data for Activity Feed
public ArrayList<MessageItem> GetActivityFeedData() {
ArrayList<MessageItem> items = new ArrayList<MessageItem>();
//testing fields
items.add(new MessageItem(1, "Bob Jones", "image", DateTime.now(), "Hello how are you?"));
items.add(new MessageItem(2, "Charlie Smith", "image", DateTime.now(), "Hello what are you doing"));
items.add(new MessageItem(3, "Robert Cross", "image", DateTime.now(), "Hello how are you?"));
return items;
}
class ActivityFeedTask extends AsyncTask<Integer, Void, Void> {
ArrayList<MessageItem> recentTracks;
@Override
protected Void doInBackground(Integer... page) {
try {
recentTracks = new ArrayList<MessageItem>();
Thread.sleep(3000);
// loading infinite Data
MessageItem data = null;
for (int i = 0; i < 10; i++) {
data = new MessageItem(1, "John Smith", "image", DateTime.now(), "hello");
recentTracks.add(data);
}
} catch (Exception e) {
}
return null;
}
@Override
protected void onPostExecute(Void result) {
ListView listView = (ListView) findViewById(R.id.messagingListView);
ActivityAdapter adapter = ((ActivityAdapter) ((HeaderViewListAdapter) listView.getAdapter()).getWrappedAdapter());
if (adapter == null) {
adapter = new ActivityAdapter(getApplicationContext(), recentTracks);
listView.setAdapter(adapter);
} else {
adapter.addAll(recentTracks);
adapter.notifyDataSetChanged();
}
}
}
public class ActivityAdapter extends ArrayAdapter<MessageItem> {
private final Context context;
private final ArrayList<MessageItem> items;
private int currentPage = 0;
public ActivityAdapter(Context context, ArrayList<MessageItem> recentTrackArrayList) {
super(context, 0, recentTrackArrayList);
this.context = context;
this.items = recentTrackArrayList;
}
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
{
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final MessageItem item = items.get(position);
convertView = getLayoutInflater().inflate
(R.layout.message_list_item, parent, false);
//final MessageItem item1 = items.get(position);
}
if (position == getCount() - 1) {
currentPage++;
new ActivityFeedTask().execute(currentPage);
}
return convertView;
}
}
}
消息\用户名TextView位于R.layout.message\列表\项目布局中,该布局为ListView行布局,但您正在调用findViewByIdR.id.messaging\用户名,因此可能位于user.getText.toString行中,以获取NPE
使用视图从ListView行的ListView行获取消息\u用户名TextView单击:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
user=(TextView)view.findViewById(R.id.messaging_username);
.....
startActivity(intent);
}
});
请正确设置代码格式。是否有异常?如果是,请粘贴它。您的放置和获取额外内容看起来很好。我需要在收到用户名时在对话视图中接收该位置吗?@Sim:不需要接收位置,只需使用onItemClick的位置参数,即单击的rowGreat的位置,因此我只需要此行的意图。putExtrapos,position;对不起,我可以问最后一个问题吗?如果我想要一个整数值,你会帮我很大的忙-我该如何做@Sim:使用intent.putExtrathreadId、threadId.getInt;在从intent检索值时使用intent.getIntExtrathreadId,-1`
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
user=(TextView)view.findViewById(R.id.messaging_username);
.....
startActivity(intent);
}
});