【问题标题】:i cant intent from listview to new activity我不能从列表视图到新活动
【发布时间】:2013-12-10 09:08:39
【问题描述】:

我有一个 ListView,其中包含来自已解析 xml 的数据。所以这是我的示例代码: 我无法从列表视图转到新活动

    list=(ListView)findViewById(R.id.list);
    // Getting adapter by passing xml data ArrayList
    adapter=new LazyAdapter(this, songsList);           
    list.setAdapter(adapter);

    list.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

             String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
             String date = ((TextView) view.findViewById(R.id.artist)).getText().toString();

             Intent i = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
             i.putExtra(KEY_HEADLINE, title);
             i.putExtra(KEY_ARTICLEDATE, date);
             startActivity(i);
        }
      });

【问题讨论】:

  • 你遇到了什么问题
  • 你得到了什么?发布 SingleMenuItemActivity 以及 logcat 错误。
  • @user3086099 你有什么错误吗?你的代码有什么问题?

标签: android android-layout android-intent android-listview


【解决方案1】:

getApplicationContext() 几乎总是错误的。你需要像Ashish 说的那样传递当前活动的上下文, getApplicationContext() 返回当前进程的单个全局应用程序对象的上下文。这通常只应在您需要一个生命周期与当前上下文分离的上下文时使用,该上下文与进程的生命周期而不是当前组件相关联。 阅读更多dev.android.com

【讨论】:

    【解决方案2】:

    您正在 Intent 中传递应用程序上下文。传递活动上下文。

             Intent i = new Intent(YourActivity.this, SingleMenuItemActivity.class);
             i.putExtra(KEY_HEADLINE, title);
             i.putExtra(KEY_ARTICLEDATE, date);
             startActivity(i);
    

    【讨论】:

      【解决方案3】:

      您正试图从 OnItemClickListener 类调用 getApplicationContext(),但它是一个活动方法。

      例如,您的活动名称是MyActivity。 所以你应该叫它MyActivity.this.getApplicationContext()

      【讨论】:

        【解决方案4】:
        first You have to add
        list.setClickable("true");
        
        then, get the listview position
          Object o = lv.getItemIdAtPosition(position);
          int posix = Integer.parseInt(o.toString());
        
        So, Final code will be..
        
        list=(ListView)findViewById(R.id.list);
            // Getting adapter by passing xml data ArrayList
            adapter=new LazyAdapter(this, songsList);           
            list.setAdapter(adapter);
            list.setClickable("true");
        
            list.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
        
                     String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
                     String date = ((TextView) view.findViewById(R.id.artist)).getText().toString();
         Object o = lv.getItemIdAtPosition(position);
          int posix = Integer.parseInt(o.toString());
                     Intent i = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
                     i.putExtra(KEY_HEADLINE, title);
                     i.putExtra(KEY_ARTICLEDATE, date);
                     startActivity(i);
                }
              });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-03
          • 2015-08-30
          • 2012-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多