2012-03-04 105 views
0

我知道这是很多像这样的问题,但我没有找到答案。从一个非活动类别开始新的活动

我有什么:

  1. 一个GridView控件 +一个ButtonAdapter类,其中也有OnClickListener类来获得在压在GridView控件至极按钮。 (你可以在这里看到的基本结构:http://www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/

我需要什么:

我需要从我的OnClickListener类开始新Activity。据我所知,我只能在我的主要活动类(或其他类Activity)中使用它,但这是我真正需要的。 我知道只有这样的结构:

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

我希望能够利用这种结构从我OnClickListener类。

回答

3

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

编辑: 以下,当你建立你的适配器,你会做这样的事情该教程:

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

你在构造函数中得到的ContextButtonAdapter你将它传递给你的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)); 
+0

找不到如何传递Activity的上下文,请问您可以写一些示例代码吗? – artouiros 2012-03-04 14:12:38

+0

@ArthurShniv我编辑了我的答案。 – Luksprog 2012-03-04 14:17:32

+0

谢谢你,想通了。 – artouiros 2012-03-04 14:34:15

0

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