【问题标题】:How to call startActivity from an internal anonymous class of an ArrayAdapter class?如何从 ArrayAdapter 类的内部匿名类调用 startActivity?
【发布时间】:2018-07-05 06:40:12
【问题描述】:

对不起,这是我的第一个问题... 我有一个 ArrayAdapter 类,我想从一个内部匿名类调用 startActivity,但出现错误“无法解析方法 startActivity”

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

    //inflating the layout
    LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = inflater.inflate(R.layout.itemview_antliostasia, parent, false);

    //get the reference to the view objects
    final TextView myName = (TextView)row.findViewById(R.id.itemViewAntliostasiaName);
    final TextView myID = (TextView)row.findViewById(R.id.itemViewAntliostasiaID);
    final TextView myAntlies = (TextView)row.findViewById(R.id.itemViewAntliostasiaAntlies);
    ImageView myEdit = (ImageView) row.findViewById(R.id.imageAntliostasiaEdit);
    ImageView myDelete = (ImageView)row.findViewById(R.id.imageAntliostasiaDelete);

    //providing the element of an ArrayList by specifying its position
    myName.setText(dataList.get(position).getName());
    myID.setText(dataList.get(position).getId());
    myAntlies.setText(dataList.get(position).getAntlies());
    myEdit.setImageResource(R.drawable.imgedit);
    myDelete.setImageResource(R.drawable.imgdelete);

    myEdit.setOnClickListener(new View.OnClickListener() {
        @Override
        public  void onClick(View v) {
            Intent intent = new Intent(getContext(), EditAntliostasioActivity.class);
            String[] editValues = new String[2];
            editValues[0] = myName.getText().toString();
            editValues[1] = myAntlies.getText().toString();
            intent.putExtra("edit values", editValues);
            startActivity(intent);

        }
    });

我认为 getContext() 出了点问题...请帮助我

【问题讨论】:

标签: android android-intent


【解决方案1】:

startActivity()Context 的一个方法,所以你需要在Context 对象上调用它:

getContext().startActivity(intent);

请注意,如果Context 不是Activity,那么您还需要在Intent 上设置FLAG_ACTIVITY_NEW_TASK。但是startActivity()Activity 中被覆盖,因此不需要它,并且您在此处有一个活动上下文。

【讨论】:

    【解决方案2】:

    试试这个

    Intent intent = new Intent(view.getContext(), EditAntliostasioActivity.class);
    

    这个错误的原因是因为getContext() 正在返回活动的上下文而不是匿名类。因此,您必须使用view.getContext()

    【讨论】:

      【解决方案3】:

      创建一个Context的实例变量..

      Class Vehicle
      {
      Context mContext;
      

      初始化上下文...

      public Vehicle(Context mContext)
      {
      this.mContext = mContext;
      }
      

      每当您调用 startActivity 时,都这样做..在您的情况下..

      mContext.startActivity(intent);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 2019-02-04
        相关资源
        最近更新 更多