从一个非活动类别开始新的活动
问题描述:
我知道这是很多像这样的问题,但我没有找到答案。从一个非活动类别开始新的活动
我有什么:
- 一个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
类。
答
在您的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));
答
由于您在MyOnClickListener.onClick()中具有View对象,因此您可以使用View.getContext()(http://developer.android.com/reference/android/view/View.html#getContext() )获取上下文对象并启动另一个活动。
找不到如何传递Activity的上下文,请问您可以写一些示例代码吗? – artouiros 2012-03-04 14:12:38
@ArthurShniv我编辑了我的答案。 – Luksprog 2012-03-04 14:17:32
谢谢你,想通了。 – artouiros 2012-03-04 14:34:15