2012-10-27 3 views
0

Possible en double:
Launching intent from a class outside an activityOù peut-Intentions être appelé

Je me demandais peut l'intention d'utiliser d'une classe POJO ou doit-il être utilisé dans celui qui étend l'activité? Si c'est possible, comment mettriez-vous en œuvre si?

public class DataManager{ 

public DataManager(){} 


public void get() 
{ 
    Intent intent = new Intent (null,Webservice.class); 
    intent.putExtra("uri", "http://someuri/service/users/id/21001"); 
    startActivity (intent); 
} 

}

Répondre

5

En fait, startActivity() est la méthode de classe d'activité. Aucune méthode de classe Java. Donc, pour accéder à cette méthode dans d'autres classe pojo vous devez utiliser Context d'activité.

Vous pouvez faire quelque chose comme,

public class DataManager{ 

Context mContext; 

public DataManager (Context context){ 
mContext = context; 
}  

public void get() 
{ 
    Intent intent = new Intent (mContext,Webservice.class); 
    intent.putExtra("uri", "http://someuri/service/users/id/21001"); 
    mContext.startActivity (intent); 
} 
} 

Mise à jour:

Une chose à noter est votre ligne de code intention,

Intent intent = new Intent (null,Webservice.class); 

ce qui est null? Vous devez placer la référence de classe Activity en tant que premier paramètre du constructeur Intent. Vérifiez-le.

Ainsi, la ligne de code sera,

Intent intent = new Intent (mContext,Webservice.class); 
+0

'intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);' :) –

+2

@MMohsinNaeem - Son seul besoin lorsque vous voulez mettre votre activité dans la nouvelle tâche. Ce n'est pas nécessaire. – user370305

+0

@MMohsinNaeem - http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK – user370305

2

oui vous pouvez appeler un Activity de toute autre classe. Après avoir transmis une référence du Context de votre Current Activity à cette classe. par exemple ...

Intent myIntent = new Intent(mContext, newActivity.class); 
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
mContext.startActivity(myIntent); 
Questions connexes