从非活动类开始新活动

时间:2012-03-04 14:03:39

标签: java android android-activity android-intent

我知道很多像这样的问题,但我找不到答案。

我有什么:

  1. 一个 GridView +一个 ButtonAdapter 类,它还有一个 OnClickListener 类,可以按下GridView上的按钮。 (您可以在此处查看基本结构:http://www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/
  2. 我需要什么:

    我需要从我的Activity课程开始新的OnClickListener。据我所知,我只能在我的主要活动类(或其他扩展Activity的类)中进行,但这是我真正需要的。 我只知道这种结构:

    Intent i = new Intent(MyMain.this, MyNewActivity.class)
    startActivity(i);
    

    我希望能够在我的OnClickListener课程中使用此结构。

2 个答案:

答案 0 :(得分:3)

ButtonAdapter构造函数中,传递构建适配器的Activity的上下文,然后使用Context启动新的Activity

修改 在构建适配器之后,您将执行以下操作:

ButtonAdapter adapter = new ButtonAdapter(this);// this is the activity(if you create in an activity the adapter)

您在Context的构造函数中获得的ButtonAdapter,您会将其传递给OnClickListener

    class MyOnClickListener implements OnClickListener  
    {  
     private final int position;  
private Context ctx;

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

     public void onClick(View v)  
     {  
      // Preform a function based on the position  
      someFunction(this.position)  
      Intent i = new Intent(MyMain.this, MyNewActivity.class)
ctx.startActivity(i);
     }  
    }  

并像这样使用它:

btn.setOnClickListener(new MyOnClickListener(position, mContext));

答案 1 :(得分:0)

由于您在MyOnClickListener.onClick()中有View对象,因此您只需使用View.getContext()(http://developer.android.com/reference/android/view/View.html#getContext())即可获取上下文对象并开始另一个活动。