3

您好我有一个自定义列表视图的基本适配器类。我的列表视图有一个按钮。当我按下该按钮时,我必须将控件重定向到另一个活动。当我使用 Intent 重定向时,它在运行时显示错误。这是我的代码,

public View getView(final int position, View convertView, ViewGroup parent) 
{

    convertView = mInflater.inflate(R.layout.listview_elements, null);

    TextView textview1 = (TextView) convertView.findViewById(R.id.TextView01);
    TextView textview2 = (TextView) convertView.findViewById(R.id.TextView02);
    TextView textview3 = (TextView) convertView.findViewById(R.id.TextView03);
    Button buy=(Button)convertView.findViewById(R.id.buy_song_button);
    buy.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

        Intent intent=new Intent(con,MainActivity.class);
        con.startActivity(intent);


        }
    }); }

如何从我的基本适配器类重定向到另一个活动?

4

5 回答 5

15

我自己已经解决了这个问题。Intent 中的一个简单修改就解决了这个问题。我不得不为我的意图设置标志。就是这样。

public View getView(final int position, View convertView, ViewGroup parent) 
     {

convertView = mInflater.inflate(R.layout.listview_elements, null);

TextView textview1 = (TextView) convertView.findViewById(R.id.TextView01);
TextView textview2 = (TextView) convertView.findViewById(R.id.TextView02);
TextView textview3 = (TextView) convertView.findViewById(R.id.TextView03);
Button buy=(Button)convertView.findViewById(R.id.buy_song_button);
buy.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {

    Intent intent=new Intent(context,MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);


    }
}); }
于 2011-05-09T04:13:18.250 回答
2

试试这个:

  Intent intent=new Intent(activity.getApplicationContext(),MyPlace.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("city", "Yangon");
    activity.getApplicationContext().startActivity(intent);
于 2013-01-28T07:34:03.127 回答
1

在 onClick 方法中使用 v.getContext() 而不是 con

于 2011-05-06T08:13:41.387 回答
1

这段代码对我有用,尤其是当您有 gridview 适配器的基本适配器类时:

cmnt_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("position",position+"");
                Intent comment_page=new Intent(view.getContext(),comments_page.class);
                comment_page.putExtra("position",position);
                view.getContext().startActivity(comment_page);
            }
于 2016-03-02T14:08:46.953 回答
1

通过构造函数传递上下文,然后只使用这行代码:

    Intent intent=new Intent(context.getApplicationContext(), YourActivity.class);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
      context.getApplicationContext().startActivity(intent);

谢谢 :)

于 2016-03-12T19:23:34.183 回答