Как использовать намерение в классе non-activity

У меня есть небольшая проблема с Android. Просто хотел знать, как вызывать намерения из класса адаптера, который просто расширяет BaseAdapter, а не класс активности.

Ответ 1

Просто вы можете использовать это,

  Intent intent = new Intent(context,MainActivity.class)
                      .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  context.startActivity(intent); 

Этот код вызовет действие из вашего базового адаптера. И я не знаю, что вы хотите сделать. Но это даст вам подсказку

Ответ 2

Чтобы начать работу, вам нужен контекст. Попробуйте со следующим подходом

передать контекстный параметр конструктору класса, который расширяет 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);

Ответ 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);
    }
}

Ответ 4

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));
}

Ответ 5

Это решило мою проблему

//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);

Ответ 6

Intent i = new Intent(NAMEOFCURRENTACTIVTY.this,ANOTHERACTIVITY.class);
finish();
startActivity(i);

и не забудьте поместить имя этого файла в файл AndroidManifest.xml внутри тега <application></application>

AndroidManifest.xml

<activity android:name=".YOURACTIVITYNAME" />

счастливое кодирование:):) Pragna