我对android有一些小问题。只是想知道如何从只扩展BaseAdapter而不是Activity Class的Adapter Class调用Intent。
答案 0 :(得分:24)
只需你可以使用它,
Intent intent = new Intent(context,MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
此代码将从您的基本适配器类调用一个活动。我不知道你想做什么.. 但这会给你一个提示
答案 1 :(得分:12)
要开始一项活动,您需要上下文。尝试使用以下方法
将context参数传递给扩展BaseAdapter的类的构造函数。
public class MyAdapter extends BaseAdapter {
Context context;
public MyAdapter(Context context) {
this.context=context;
}
要开始活动,请使用以下方法
Intent i = new Intent();
i.setClassName("com.abc.mypackage", "com.abc.mypackage.NewActivity");
context.startActivity(i);
或
Intent i = new Intent(context, MainActivity.class);
context.startActivity(i);
答案 2 :(得分:3)
通常,自定义适配器是Activity
子类的内部类。这意味着它们引用Activity
字段中的外OuterActivity.this
,其中OuterActivity
是活动的名称,包含适配器类。在这种情况下,您可以使用以下代码启动Intent
:
Intent intent = new Intent(OuterActivity.this, NextActivity.class);
OuterActivity.this.startActivity(intent);
在其他情况下,当适配器类没有嵌套时,您可以将Context
引用传递给它的构造函数,就像在ArrayAdapter
,SimpleAdapter
中完成一样。您必须将此引用存储在字段中并使用它来启动意图。这是可能的,因为你真的不需要一个活动来启动一个意图。实际上你需要一个上下文。这是一个例子:
public class CustomAdapter extends BaseAdapter {
private Context mContext;
public CustomAdapter(Context context) {
mContext = context;
}
// Other methods...
private void startIntent()
{
Intent intent = new Intent(context, NextActivity.class);
context.startActivity(intent);
}
}
答案 3 :(得分:2)
public class sample{
Context mContext;
public sample(Context context){
mContext=context;
}
mContext.startActivity(new Intent(mContext,sample.class));
}
答案 4 :(得分:2)
这解决了我的问题
//Declare mcontext
Context mContext
//and where you need to execute code
Intent intent = new Intent(mContext, Classyouwant.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
答案 5 :(得分:-4)
Intent i = new Intent(NAMEOFCURRENTACTIVTY.this,ANOTHERACTIVITY.class);
finish();
startActivity(i);
并且不要忘记将该文件的名称放入<application></application>
标记内的AndroidManifest.xml文件中
的的AndroidManifest.xml 强> 的
<activity android:name=".YOURACTIVITYNAME" />
快乐的编码:) :) Pragna