如何在非活动类中使用intent

时间:2011-06-16 05:30:16

标签: android android-intent

我对android有一些小问题。只是想知道如何从只扩展BaseAdapter而不是Activity Class的Adapter Class调用Intent。

6 个答案:

答案 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引用传递给它的构造函数,就像在ArrayAdapterSimpleAdapter中完成一样。您必须将此引用存储在字段中并使用它来启动意图。这是可能的,因为你真的不需要一个活动来启动一个意图。实际上你需要一个上下文。这是一个例子:

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