Intent myIntentA = new Intent(MainMap.this, AudioStream.class);
myIntentA.putExtra(AUDIO_STREAM,AUDIO_STREAM_URL);
MojProg.this.startActivity(myIntentA);
Cela ne fonctionnera pas. Parce que "ceci" signifie "cette classe". Vous ne pouvez pas l'utiliser sur un autre cours (Oui, vous pouvez le faire, mais il y a différentes façons de le faire.) S'il vous plaît étudier sur "ceci" sur les forums, sur ce site ou sur le site web d'Oracle.). C'est la raison de cet avertissement. Eh bien, on dirait que votre question est "Comment puis-je tirer le contexte d'une classe de non-activité?". (Le premier paramètre de Intent() est Context).
Pour ce faire, vous pouvez créer un instant de contexte dans votre activité principale et affecter votre contexte de base à elle comme:
static Context context;
....
context = this.getBaseContext();
Ne pas oublier que votre activité principale. Puis dans votre classe de non-activité, vous pouvez tirer ce contexte et l'utiliser avec l'intention comme:
Context context;
Intent intent;
....Constructor:
context = MainActivity.context;
intent = new Intent(context, YourSecondActivity.class); // you have to declare your second activity in the AndroidManifest.xml
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this is required to call "Intent()" in a non-activity class.
//And then you can call the method anywhere you like (in this class of course)
context.startActivity(intent);
Ok. Vous êtes prêt à aller après un pas de plus. Dans AndroidManifest.xml, déclarez votre deuxième activité comme la première;
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".YourSecondActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
</activity>
Vous êtes prêt maintenant. Mais un dernier avertissement, n'oubliez pas de disposer de votre activité avant d'en ouvrir une autre pour éviter les retards. Amusez-vous.
Merci Mark pour stocker une référence interne à l'objet MainMap qu'il veut utiliser pour l'inent? pouvez-vous me donner un exemple sur la façon de faire cela? – Nikola
Typiquement, vous le feriez en passant la référence MainMap en tant que paramètre au constructeur MyItemizedOverlay, puis en la stockant dans un membre de données à l'intérieur de l'objet MyItemizedOverlay. Si vous utilisez cette approche, cependant, vous devrez gérer le MainMap étant "démoli" et reconstruit via les méthodes onSaveInstanceState et onRestoreInstanceState afin de maintenir une référence valide. – Mark