【问题标题】:How to call startactivity or call intent from onitemclick event of listview in fragment?如何从片段中列表视图的 onitemclick 事件调用 startactivity 或调用意图?
【发布时间】:2011-08-24 14:57:19
【问题描述】:

我有一个有自己布局的片段。在布局中,有一个列表视图,我附加了 onitemclick 侦听器,当单击列表行时,它将启动/打开一个意图。不幸的是,我总是收到这个错误:

从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志

但我不喜欢设置标志活动。我无法打开 SamplePage.class

public class FrontPageFragment extends Fragment
{

    private ArrayList<Order> m_orders = null;
    private OrderAdapter m_adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View fragmentView=inflater.inflate(R.layout.frontpage, container, false);

        m_orders = new ArrayList<Order>();
        this.m_adapter = new OrderAdapter(this.getActivity().getApplicationContext(), R.layout.name, m_orders);

        View eView=(View)fragmentView.findViewById(R.id.approvedOrders);
        ListView listView=(ListView)eView.findViewById(R.id.listview);

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

                Intent intent = new Intent(view.getContext(), SamplePage.class);
                intent.putExtra("id", "1");
                view.getContext().startActivity(intent);

            }
         });

        //bind data
        listView.setAdapter(this.m_adapter);


        return fragmentView;

    }

【问题讨论】:

  • 您需要调用此片段的活动上下文。相反,您可以添加另一个几乎相同的片段,而不是开始新的意图。

标签: android


【解决方案1】:

当我复制你的代码时,我得到了同样的错误。所以我稍微改变了一下,它奏效了。检查这个:

Intent intent = new Intent(getActivity().getBaseContext(), Sampleclass.class);

intent.putExtra("id", 1);

startActivity(intent);

【讨论】:

  • startActivity(intent);是关键!当我使用其他语句时,例如 getBaseContext.startActivity(intent);然后出现了错误。
  • 就我而言,第一行看起来像Intent intent = new Intent(getBaseContext(), Sampleclass.class);
【解决方案2】:

试试这个:

FrontPageFragment.this.startActivity(intent);

【讨论】:

  • 我用你的解决方案解决了我的问题,谢谢!我正在尝试使用以下代码在 NewsActivity 活动的 onItemClick() 内部类方法中启动 NewsDetailActivity 活动: Intent i = new Intent(getApplicationContext(), NewsDetailActivity.class); i.putExtra("newsId", "1"); NewsActivity.this.startActivity(i);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
相关资源
最近更新 更多