【问题标题】:Open a new activity for each button of the GridView为 GridView 的每个按钮打开一个新活动
【发布时间】:2012-08-31 09:09:30
【问题描述】:

这是我的自定义OnClickListener。我从ButtonAdapter.class 传递我的Gridview 按钮的位置。我想为网格视图的每个按钮打开一个新活动。我应该对我的MyOnClickListener.class 进行哪些更改?

MyOnClickListener.class

import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;

public class MyOnClickListener implements OnClickListener {


private final int position;  

    public MyOnClickListener(int position)  
    {  
        this.position = position;  
    }  

    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent = new Intent(v.getContext(), WordsList.class);
        v.getContext().startActivity(intent);
    }

}

我得到了解决方案。我试过了,它有效!

public class MyOnClickListener implements OnClickListener {


private final int position;  

public MyOnClickListener(int position)  
{  
    this.position = position;  
}  

public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(position){
        case 0:
        Intent a = new Intent(v.getContext(), WordsList.class);
        v.getContext().startActivity(a);
        break;
    case 1:
        Intent b = new Intent(v.getContext(), About.class);
        v.getContext().startActivity(b);
        break;  

    }


}

}

【问题讨论】:

  • 你现在面临什么问题?
  • 问题已解决。我使用了 switch(position){case 0:....}

标签: android android-intent android-button onclicklistener


【解决方案1】:

或者类似的东西:

private Class[] activities = {
    Activity1.class,   // position=0
    Activity2.class,   // position=1
    //...
    };

public void onClick(View v) {
    Intent intent = new Intent(v.getContext(), activities[position]);
    v.getContext().startActivity(intent);
}

但这很简单,也许我没有抓住重点?

【讨论】:

    【解决方案2】:
    public void onClick(View v) {
        // TODO Auto-generated method stub
     Intent intent; 
     switch(v.getId())
     {
        case R.id.btn1:
           intent = new Intent(v.getContext(), WordsList1.class);
           v.getContext().startActivity(intent);
           break;
        case R.id.btn2:
           intent = new Intent(v.getContext(), WordsList2.class);
           v.getContext().startActivity(intent);
           break;
      }
    
    }
    

    【讨论】:

      【解决方案3】:

      我很确定您应该使用 OnItemClickListener,因为它专门用于基于适配器的 UI。 除了视图本身(如在 OnClick 中)之外,它还会传递给您,还会传递位置和 ID,以便轻松识别调用者并对其进行正确操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-25
        • 1970-01-01
        • 2013-04-10
        • 2017-12-17
        • 2019-03-07
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        相关资源
        最近更新 更多