2010-10-14 4 views
5

У меня есть небольшая идея о полезных классах с небольшим сомнением по требованию.Использование служебных классов в программировании для Android

Если я использую класс Utility в своем приложении, чем использовать этот класс в моей основной деятельности, мне нужно создать объект этого класса, или я могу напрямую импортировать этот класс в свою основную деятельность?

Я сожалею, если я не даю ясного смысла.

Вкратце, все, о чем я хочу сказать, это то, что в принципе, как я могу использовать класс утилит в своей основной деятельности?

Спасибо, Дэвид

+0

Другой ответ: http://stackoverflow.com/a/4158902/1414809 –

ответ

7

В значительной степени зависит от того, какую утилиту вы имеете в виду. Есть

1) классы полезности, реализующие статические методы. В этом случае вы просто вызываете их напрямую, используя имя класса

2) методы классов утилит, которые не являются статическими, требуют создания и, возможно, инициализации экземпляра этого класса. Затем экземпляр используется для вызова этих методов.

3) служебные классы, к которым можно получить доступ через Context.то вы можете позвонить getApplicationContext(), а затем вы можете get доступ к коммунальным классам

0

Если класс утилита создана в вашем приложении, то вы можете обратиться к нему по первому созданию getMethod в классе приложения, затем происходит

Application Мс = (Application) контекст .getApplicationContext();

mc.getUtilityClass(). SomeMethod()

1

Если методы в вашем классе утилиты являются статическими, то вы можете вызывать их из вашей основной деятельности. например:

int i = Utility.RandInt(); 

Если они не являются статичными, то вы должны создать объект:

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

Это в основном зависит от того, что делает ваша утилита класса. Но большую часть времени, если вы создаете класс Utility, вы хотите создать статические методы и вызывать их без создания экземпляра:

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

Тогда на вашей деятельности:

MyUtilities.foo("baz"); 

Of Конечно, есть случаи, когда вы захотите создать экземпляр класса Utility. Например, если вы создали глобальный адаптер, который будет использоваться всеми вашими ListViews.

+0

Это то, что я использую, и кажется, быть самой простой реализацией для большинства случаев. –

+0

Лучшим подходом для этого является создание класса 'final' и добавление конструктора' private'. –

+0

, тем не менее, создание финала класса не рекомендуется. Что делать, если вы хотите расширить этот класс? –

-2

Я не знаю, какой именно точный вопрос yiur. Но вот код, в котором я использовал класс Utility в своей деятельности. AnimationUtil используется для загрузки анимации в 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

Извините, это не отвечает на вопрос – Hasan

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

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

Это, как правило, класс, который имеет только static methods (возможно, с частным конструктору и промаркирован abstract/final для предотвращения instantiation/subclassing). Он существует только, чтобы сделать другие классы проще использовать. - например, предоставляя кучу static methods работать с строковыми значениями, выполняя дополнительные действия, которые сама строка не поддерживают

Utility классов вообще не operate on classes у вас есть контроль над, так как в противном случае вы 'd обычно помещал behaviour directly в пределах этого class. Они не terribly neat in OO terms,, но все равно могут быть полезными.

в answered by Jon Skeet

-3

общественного класса 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; 
} 

}

 Смежные вопросы

  • Нет связанных вопросов^_^