У меня есть небольшая проблема с Android. Просто хотел знать, как вызывать намерения из класса адаптера, который просто расширяет BaseAdapter, а не класс активности.
Как использовать намерение в классе non-activity
Ответ 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