2010-10-14 15 views
5

Tôi có một chút ý tưởng về các Lớp Tiện ích với một chút nghi ngờ theo yêu cầu.Sử dụng các lớp tiện ích trong lập trình Android

Nếu tôi sử dụng lớp Tiện ích trong Ứng dụng của mình hơn là sử dụng lớp đó trong Hoạt động chính của mình, tôi có phải tạo đối tượng của lớp đó hoặc tôi có thể trực tiếp Nhập lớp đó vào hoạt động chính của mình không?

Tôi rất tiếc nếu tôi không hiểu rõ.

Tóm lại, tất cả những gì tôi muốn nói rõ ràng về cơ bản là tôi có thể sử dụng lớp tiện ích trong Hoạt động chính của mình như thế nào?

Cảm ơn, david

+0

câu trả lời khác: http://stackoverflow.com/a/4158902/1414809 –

Trả lời

7

Tùy thuộc vào loại tiện ích bạn đang đề cập đến. Có

1) các lớp tiện ích triển khai phương pháp tĩnh. Trong trường hợp đó, bạn chỉ cần gọi chúng trực tiếp bằng cách sử dụng tên lớp

2) các phương thức lớp tiện ích không tĩnh - yêu cầu tạo và có thể khởi tạo một thể hiện của lớp đó. Sau đó, cá thể được sử dụng để gọi những phương thức đó.

3) các lớp tiện ích có thể truy cập thông qua Context.sau đó bạn có thể gọi getApplicationContext() và sau đó bạn có thể get quyền truy cập vào các lớp tiện ích

0

Nếu lớp tiện ích của bạn được tạo ra trong ứng dụng của bạn sau đó bạn có thể tham khảo nó bằng cách trước tiên tạo một GetMethod trong lớp ứng dụng, sau đó đi

Application mc = (Application) bối cảnh .getApplicationContext();

mc.getUtilityClass(). SomeMethod()

1

Nếu các phương pháp trong lớp tiện ích của bạn là tĩnh thì bạn có thể gọi họ là từ hoạt động chính của bạn. ví dụ:

int i = Utility.RandInt(); 

Nếu họ không tĩnh thì bạn phải tạo một đối tượng:

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

Nó chủ yếu phụ thuộc vào những gì lớp tiện ích của bạn không. Nhưng, hầu hết thời gian, nếu bạn tạo một lớp Utility, bạn sẽ muốn tạo phương pháp tĩnh và gọi họ mà không cần tạo một thể hiện:

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

Sau đó, đối với hoạt động của bạn:

MyUtilities.foo("baz"); 

Trong số Tất nhiên, có những trường hợp bạn sẽ muốn tạo cá thể của một lớp Utility. Ví dụ: nếu bạn đã tạo Bộ điều hợp chung sẽ được sử dụng bởi tất cả ListViews của bạn.

+0

Đây là những gì tôi sử dụng và dường như là triển khai dễ dàng nhất cho hầu hết các trường hợp. –

+0

Một cách tiếp cận tốt hơn cho việc này là tạo lớp 'final' và thêm một hàm tạo' private'. –

+0

làm cho lớp cuối cùng không được khuyến khích mặc dù. Nếu bạn muốn mở rộng lớp học này thì sao? –

-2

Tôi không biết câu hỏi chính xác là gì. Nhưng đây là một mã mà tôi đã sử dụng lớp Utility trong hoạt động của mình. AnimationUtil được sử dụng để tải hoạt ảnh lên một 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

Xin lỗi, điều này không trả lời được câu hỏi – Hasan

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

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

Nó thường là một lớp mà chỉ có static methods (có thể với một nhà xây dựng tư nhân và đánh dấu abstract/final để ngăn chặn instantiation/subclassing). Nó chỉ tồn tại để làm cho các lớp khác dễ dàng hơn sử dụng -. ví dụ, cung cấp một loạt các static methods để làm việc với các giá trị string, thực hiện các hoạt động phụ trợ Chuỗi tự nó không hỗ trợ

lớp Utility thường không operate on classes bạn có kiểm soát, vì nếu không bạn 'd thường đặt behaviour directly trong đó class. Chúng không phải là terribly neat in OO terms, nhưng vẫn có thể hữu ích.

như 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; 
} 

}