470 Stimmen

Aufruf von startActivity() von außerhalb eines Activity-Kontextes

Ich habe eine ListView in meiner Android-Anwendung. Ich binden zu diesem ListView unter Verwendung einer benutzerdefinierten Unterklasse der ArrayAdapter Klasse. Innerhalb der überschriebenen ArrayAdapter.getView(...) Methode, weise ich eine OnClickListener . In der onClick Methode der OnClickListener Ich möchte eine neue Aktivität starten. Ich erhalte die Ausnahme:

Calling startActivity() from outside of an Activity  context requires the  
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

Wie kann ich die Context dass die ListView (die aktuelle Activity ) arbeitet unter?

2voto

Félix Maroy Punkte 1079

In Ihrer Activity (wo Sie den Adapter aufrufen) ändern Sie einfach getActivityContext() con YourActivity.this . Hier ist ein Beispiel:

yourAdapter = new YourAdapter(yourList, YourActivity.this); // Here YourActivity.this is the Context instead of getActivityContext()
recyclerView.setAdapter(yourAdapter);

2voto

Gaurav Lambole Punkte 253

Verwenden Sie diesen Code in Ihrer Adapter_Activity und verwenden Sie context.startActivity(intent_Object) y intent_Object.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Zum Beispiel so:

Intent n_act = new Intent(context, N_Activity.class);
n_act.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(n_act);

Es funktioniert....

1voto

Chirag Patel Punkte 31
Intent viewIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);    
viewIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
startActivity(viewIntent);   

Ich hoffe, das funktioniert.

1voto

Mayank Sharma Punkte 629

Mit dem gleichen Problem konfrontiert, dann implementiert

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

und haben das Problem gelöst.

Es kann einen weiteren Grund geben, der mit dem Listenansicht-Adapter zusammenhängt.
Sie können sehen Dieser Blog hat es sehr gut beschrieben.

1voto

Pooya Hayati Punkte 89

Verwenden Sie diesen Code. Funktioniert bei mir einwandfrei. Etwas von außerhalb einer Aktivität teilen:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");

// Append Text
String Text = "Your Text Here"

intent.putExtra(Intent.EXTRA_TEXT, Text);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Intent shareIntent = Intent.createChooser(intent,"Share . . . ");
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
G.context.getApplicationContext().startActivity(shareIntent);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X