我的代码存在语法错误,在“getView”中,我想为按钮“update”创建一个监听器,以移至另一个 Activity :

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


        LayoutInflater l = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        View rowView = l.inflate(R.layout.temp, parent, false);
        TextView textView = (TextView) rowView.findViewById(R.id.textView1);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView1);
        Button update = (Button) rowView.findViewById(R.id.button1);

//      update.setOnClickListener(new View.OnClickListener() {
//
//          @Override
//          public void onClick(View v) {
//
//                 Intent redirect = new Intent(getApplicationContext(),Update.class);
//                 startActivity(redirect);
//
//          }
//      });




        textView.setText(sa.get(position));


        return rowView;
    }

我试图解决有关“Intent ”的这些错误,但我失败了:(
  • 对于新的View.OnClickListener()类型,未定义方法startActivity(Intent)
  • 对于新的View.OnClickListener()类型,未定义方法getApplicationContext()

  • 甚至当我从“onClick”方法中删除这些语句时,问题也没有改变!
    我导入了“Intent”库,如何解决?

    最佳答案

    如果适配器在其他文件中,则需要 Activity 上下文。

    您需要将 Activity 上下文从 Activity 类传递到适配器构造函数。

    http://developer.android.com/reference/android/content/Context.html#startActivity(android.content.Intent)
    startActivity是您的 Activity 类别的一种方法。因此,您需要 Activity 上下文来启动 Activity 。

    另外,请不要使用getApplicationContext使用 Activity 上下文。

    When to call activity context OR application context?

    通过常用软件检查答案。

         update.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
    
                Intent redirect = new Intent(context,Update.class);
                context.startActivity(redirect);
          }
          });
    

    关于android - 如何修复类型为new View.OnClickListener()语法错误的方法startActivity(Intent)未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17505969/

    10-10 13:50
    查看更多