2010-10-14 31 views
5

J'ai une petite idée des classes utilitaires avec un léger doute sur demande.Utilisation des classes d'utilitaires dans la programmation android

Si j'utilise une classe utilitaire dans mon application que d'utiliser cette classe dans mon activité principale, dois-je créer l'objet de cette classe ou importer directement cette classe dans mon activité principale?

Je suis désolé si je ne suis pas clair. En résumé, tout ce que je veux être clair est que, fondamentalement, comment puis-je utiliser la classe d'utilité dans mon activité principale?

Merci, david

+0

: http://stackoverflow.com/a/4158902/1414809 –

Répondre

7

Cela dépend fortement du type d'utilitaire auquel vous faites référence. Il existe

1) classes d'utilitaire qui implémentent des méthodes statiques. Dans ce cas, vous les appelez directement en utilisant le nom de classe

2) classes de classes d'utilitaires qui ne sont pas statiques - nécessite la création et éventuellement l'initialisation d'une instance de cette classe. Ensuite, l'instance est utilisée pour appeler ces méthodes.

3) les classes d'utilitaires auxquelles on peut accéder par Context.alors vous pouvez appeler getApplicationContext() et vous pouvez get accès aux classes utilitaires

0

Si votre classe utilitaire est créé dans votre application, vous pouvez vous y référer en créant d'abord une getMethod dans la classe d'application, puis aller

application mc = (Application) contexte .getApplicationContext();

mc.getUtilityClass(). SomeMethod()

1

Si les méthodes de votre classe utilitaire sont statiques alors vous pouvez les appeler de votre activité principale. par exemple:

int i = Utility.RandInt(); 

Si elles ne sont pas statiques, vous devez créer un objet:

Utility u = new Utility(); 
int i = u.randInt(); 
11

Cela dépend principalement de ce que votre classe utilitaire fait. Mais, la plupart du temps, si vous créez une classe utilitaire, vous souhaitez créer des méthodes statiques et les invoquer sans créer une instance:

class MyUtilities{ 
    public static String foo(String bar){ 
     return bar.toUppercase; 
    } 
} 

Puis, sur votre activité:

MyUtilities.foo("baz"); 

de Bien sûr, il y a des cas où vous voudrez créer une instance d'une classe Utility. Par exemple, si vous avez créé un adaptateur global qui sera utilisé par tous vos ListViews.

+0

C'est ce que je l'utilise et semble être la mise en œuvre la plus facile pour la plupart des cas. –

+0

Une meilleure approche pour cela est de rendre la classe 'final' et d'ajouter un constructeur' private'. –

+0

rendant la finale de la classe n'est pas recommandé cependant. Et si vous voulez prolonger cette classe? –

-2

Je ne sais pas quelle est exactement votre question. Mais voici un code où j'ai utilisé la classe Utility dans mon activité. AnimationUtil est utilisé pour charger l'animation sur un ImageView.

ImageView waitImg = (ImageView) findViewById(R.id.ImageView02); 

    Animation waitAnim = AnimationUtils.loadAnimation(this, R.anim.wait_rotate); 

    waitImg.startAnimation(waitAnim); 
    waitAnim.cancel(); 
    waitAnim.reset(); 
+0

Désolé, cela ne répond pas à la question – Hasan

1
public final class Utils 
    { 
    private Utils() 
    { 
    } 

    public static void makeToast(Context context, String text){ 
     Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); 
    } 
} 

Il est généralement une classe qui n'a que static methods (peut-être avec un constructeur privé et marqué abstract/final pour éviter instantiation/subclassing). Il existe seulement pour faire d'autres classes plus facile à utiliser -. par exemple, en fournissant un tas de static methods travailler avec des valeurs de chaîne, effectuer des actions supplémentaires qui chaîne elle-même ne prend pas en charge

classes utilitaires généralement ne pas operate on classes vous avez le contrôle, sinon vous habituellement mis le behaviour directly dans ce class. Ils ne sont pas terribly neat in OO terms, mais peuvent encore être joliment utiles. Une autre réponse

comme answered by Jon Skeet

-3

public class {Utils

public static boolean isNetworkAvailable(Context context) { 
    ConnectivityManager connectivityManager = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager 
      .getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

public static void unlockScreenOrientation(Activity activity) { 
    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
} 

public static void lockScreenOrientation(Activity activity) { 
    int currentOrientation = activity.getResources().getConfiguration().orientation; 
    if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) 
    { 
     activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 
    else 
    { 
     activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 
} 
// Get Http Post response 
@Nullable 
public static String getHttpResponse(String url, List<NameValuePair> nameValuePairs) { 
    HttpClient httpClient = new DefaultHttpClient(); 

    HttpPost httpPost = new HttpPost(url); 
    UrlEncodedFormEntity entity; 
    try { 
     entity = new UrlEncodedFormEntity(nameValuePairs); 
     httpPost.setEntity(entity); 
     HttpResponse response = httpClient.execute(httpPost); 

     HttpEntity resEntity = response.getEntity(); 
     String res = EntityUtils.toString(resEntity); 
     return res; 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

public static void CopyStream(InputStream is, OutputStream os) { 
    final int buffer_size=1024; 
    try 
    { 
     byte[] bytes=new byte[buffer_size]; 
     for(;;) 
     { 
      int count=is.read(bytes, 0, buffer_size); 
      if(count==-1) 
       break; 
      os.write(bytes, 0, count); 
     } 
    } 
    catch(Exception ex){} 
} 

public static JSONObject getJsonObjectFromXmlResponse(String xmlString) { 
    JSONObject objectJson = new JSONObject(); 
    //JSONArray arrayJson = new JSONArray(); 

    XmlPullParser parser = Xml.newPullParser(); 
    try { 
     parser.setInput(new StringReader(xmlString)); 
     int eventType = parser.getEventType(); 

     while (eventType != XmlPullParser.END_DOCUMENT) { 
      String name; 
      switch (eventType) { 
       case XmlPullParser.START_TAG: 
        name = parser.getName(); 
        if (name.equalsIgnoreCase("string")) { 
         String yourValue = parser.nextText(); 
         //arrayJson = new JSONArray(yourValue); 
         objectJson = new JSONObject(yourValue); 
        } 
        break; 
      } 
      eventType = parser.next(); 
     } 
    } catch (XmlPullParserException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return objectJson; 
} 

}