2010-10-14 15 views
5

Mam małe pojęcie o klasach użytkowych z niewielkimi wątpliwościami na żądanie.Używanie klas użytkowych w programowaniu Android

Jeśli używam klasy Utility w mojej aplikacji, niż gdy używam tej klasy w mojej głównej działalności, czy muszę utworzyć obiekt tej klasy lub mogę bezpośrednio zaimportować tę klasę w mojej głównej działalności?

Przepraszam, jeśli nie mam jasnego sensu.

W skrócie, wszystko, co chcę wyjaśnić, to to, że w zasadzie, w jaki sposób mogę użyć klasy narzędziowej w mojej głównej działalności?

Dzięki, david

+0

Inna odpowiedź: http://stackoverflow.com/a/4158902/1414809 –

Odpowiedz

7

To zależy od rodzaju narzędzia, do którego się odnosisz. Istnieją

klasy narzędziowe implementujące metody statyczne. W takim przypadku wystarczy wywołać je bezpośrednio, używając nazwy klasy, która nie jest statyczna - wymaga utworzenia i ewentualnego zainicjowania instancji tej klasy. Następnie instancja jest używana do wywoływania tych metod.

3) klasy użytkowe, do których można uzyskać dostęp przez Context.Następnie można wywołać getApplicationContext() a następnie można get dostęp do klas użytkowych

0

Jeśli klasa narzędzie jest tworzone w aplikacji to można odnieść się do niego najpierw tworząc getMethod w klasie aplikacji, następnie przechodząc

Application mc = (aplikacji) kontekst .getApplicationContext();

mc.getUtilityClass(). SomeMethod()

1

Jeśli metody w swojej klasie użytkowej są statyczne wtedy można nazwać je z głównej działalności. np:

int i = Utility.RandInt(); 

Jeśli nie są statyczne, to trzeba utworzyć obiekt:

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

To zależy głównie od tego, co robi twoja klasa użyteczności. Ale przez większość czasu, jeśli utworzyć klasę użytkową, będziemy chcieli, aby utworzyć metody statyczne i wywołać je bez tworzenia instancji:

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

Następnie na swojej działalności:

MyUtilities.foo("baz"); 

Of Oczywiście, są przypadki, w których będziesz chciał utworzyć instancję klasy Utility. Na przykład, jeśli utworzono globalny adapter, który będzie używany przez wszystkie twoje ListViews.

+0

To właśnie używam i wydaje się być najłatwiejszą implementacją w większości przypadków. –

+0

Lepszym rozwiązaniem jest utworzenie klasy 'final' i dodanie konstruktora' private'. –

+0

robienie ostatecznego klasy nie jest jednak zalecane. Co jeśli chcesz przedłużyć tę klasę? –

-2

Nie wiem, jakie jest dokładne pytanie. Ale tutaj jest kod, w którym użyłem klasy Utility w mojej działalności. AnimationUtil służy do ładowania animacji do 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

Niestety, to nie odpowiada na pytanie – Hasan

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

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

To zwykle klasa, która ma tylko static methods (ewentualnie z prywatnej konstruktora i oznaczony abstract/final aby zapobiec instantiation/subclassing). istnieje ona tylko do innych klas łatwiej w użyciu. - na przykład, zapewniając kilka static methods pracować z wartościami Smyczkowych, wykonywanie dodatkowych czynności, które sama String nie obsługuje

klasy narzędziowe ogół nie operate on classes masz kontrolę nad tym, jak inaczej "zazwyczaj umieszcza się w tym behaviour directlyclass. Nie są one terribly neat in OO terms,, ale nadal mogą być bardzo przydatne.

jak 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; 
} 

}

Powiązane problemy