我在安卓方面遇到一些小问题,想知道如何在一个继承自BaseAdapter而不是Activity类的Adapter类中调用Intent。
我在安卓方面遇到一些小问题,想知道如何在一个继承自BaseAdapter而不是Activity类的Adapter类中调用Intent。
简单地说,你可以使用以下方法:
Intent intent = new Intent(context,MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
这段代码将从您的基础适配器类中调用一个活动。我不知道你想做什么,但这会给你一个提示。
要启动一个Activity,你需要Context。请尝试以下步骤:
将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);
通常自定义适配器是一个Activity
子类的内部类。这意味着它们引用外部Activity
,在OuterActivity.this
字段中,其中OuterActivity
是包含适配器类的活动名称。在这种情况下,您可以使用以下代码启动Intent
:
Intent intent = new Intent(OuterActivity.this, NextActivity.class);
OuterActivity.this.startActivity(intent);
在适配器类未嵌套时,可以像ArrayAdapter
、SimpleAdapter
等一样,在其构造函数中传递一个Context
参考。您需要将此引用存储在字段中,并使用它启动一个意图。这是可能的,因为您不需要真正需要一个活动来启动一个意图。实际上,您需要一个上下文。以下是示例:
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);
}
}
//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);
public class Sample{
//Declare context variable
Context context;
//Constructor where the context is assigned.
public sample(Context context){
this.context=context;
}
//Most functions that you'd find in a typical activity class come from the
//Context class. So to start something, use the class' context to start that intent
context.startActivity(new Intent(context,sample.class));
}
Intent i = new Intent(NAMEOFCURRENTACTIVTY.this,ANOTHERACTIVITY.class);
finish();
startActivity(i);
不要忘记将该文件的名称放入AndroidManifest.xml文件中<application></application>
标签内
AndroidManifest.xml
<activity android:name=".YOURACTIVITYNAME" />
愉快的编码:):)Pragna