Android 通过putExtra将信息传递给intent

Android 通过putExtra将信息传递给intent,android,Android,嗨,我正在尝试使用put extra,这样我就可以在列表视图中将用户名和位置发送到一个新的意图,但我不确定为什么我的代码不起作用。应用程序已加载,但当我单击listitem时,它停止运行。任何帮助都将不胜感激 public class MainActivity extends Activity { TextView user; @Override protected void onCreate(Bundle savedInstanceState) {

嗨,我正在尝试使用put extra,这样我就可以在列表视图中将用户名和位置发送到一个新的意图,但我不确定为什么我的代码不起作用。应用程序已加载,但当我单击listitem时,它停止运行。任何帮助都将不胜感激

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