【问题标题】:How can i goto an other activity onclick of list item of listView如何在 listView 的列表项的单击上转到另一个活动
【发布时间】:2015-10-26 18:19:47
【问题描述】:

我正在尝试在单击列表视图的列表项时打开另一个活动,并将单击的列表项的数据显示到新活动上。但是我能够获取列表项 onclick 的数据,但是当我使用 startAcitvity(intent) 方法开始新活动时,只有一个空白活动正在打开,并且在调试时我得到了 startActivity() 的信息不明确的 。请帮我解决这个问题。 我的代码在这里:

public class MainActivity extends AppCompatActivity {
ListView lvDetail;
Intent intent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lvDetail = (ListView) findViewById(R.id.list);
    new ProgressTask(MainActivity.this).execute();

    lvDetail.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            try {
                intent = new Intent(MainActivity.this, DataDisplayer.class);
                Employee e = (Employee) parent.getItemAtPosition(position);
                ArrayList<String> el = new ArrayList<String>();
                el.add(String.valueOf(e.getId()));
                el.add(e.getName());
                el.add(String.valueOf(e.getAge()));
                el.add(String.valueOf(e.getSalary()));
                Bundle bundle = new Bundle();
                bundle.putStringArrayList("emp", el);
                intent.putExtras(bundle);
                //intent.putStringArrayListExtra("emp", el);
                startActivityForResult(intent, 187);
            } catch (Exception er) {
                er.printStackTrace();
            }
        }
    });

【问题讨论】:

  • 检查this answer
  • 我没觉得它有用
  • 你有没有在 manifest 文件中提到过 datadisplayer 类? &lt;activity android:name="datadisplayer"&gt;&lt;/activity&gt;
  • 你的DataDisplayer类的代码是什么?

标签: android


【解决方案1】:

实际上,我自己发现了问题,实际上问题出在 DataDisplayer 类中。所以这是唯一的问题。 MainActivity 没有问题。 我使用 onCreate 方法如下:

public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); }

【讨论】:

  • 虽然我应该使用以下 onCreate 而不是上述方法:
  • 受保护的 void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
  • 受保护的 void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } 是 Android Activity 生命周期方法,您的视图将在此方法中设计。这就是为什么这种方法对它有用的原因。 @Anushka Khare
【解决方案2】:

你在一个内部类所以你必须调用 startactivity 如下:

MainActivity.this.startActivityforresult(intent,reqcode);

【讨论】:

  • 对不起,这不是真的。 startActivityForResult 没有被 AdapterView.OnItemClickListener 覆盖,所以你可以像在主题描述的代码中那样调用它。
  • 还有另一种方法可以覆盖方法 onListItemClick() 并从该方法开始您的活动,而不是此 OnclickListner() 接口,如果后者不起作用:)
猜你喜欢
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多