2013-01-23 42 views
5

Điều tôi muốn làm là tạo tệp java có nhiều chức năng khác nhau và tôi muốn sử dụng nó trên toàn bộ dự án. Ví dụ kiểm tra kết nối Internet. Sau đó, tôi muốn gọi hàm đó trên mỗi hoạt động. Có ai biết làm thế nào để làm điều đó?tạo chức năng toàn cầu trong android

+0

bạn có thể thử với giải pháp được đăng với ví dụ. –

Trả lời

10

Tạo lớp như thế này và thêm chức năng của mình tại đây:

package com.mytest; 

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 

public class MyGlobals{ 
    Context mContext; 

    // constructor 
    public MyGlobals(Context context){ 
     this.mContext = context; 
    } 

    public String getUserName(){ 
     return "test"; 
    } 

    public boolean isNetworkConnected() { 
      ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo ni = cm.getActiveNetworkInfo(); 
      if (ni == null) { 
      // There are no active networks. 
      return false; 
      } else 
      return true; 
    } 
} 

Sau đó tuyên bố dụ trong hoạt động của bạn:

MyGlobals myGlog; 

Sau đó khởi tạo và phương pháp sử dụng từ buổi học toàn cầu:

myGlog = new MyGlobals(getApplicationContext()); 
String username = myGlog.getUserName(); 

boolean inConnected = myGlog.isNetworkConnected(); 

Yêu cầu quyền trong tệp kê khai của bạn:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Cảm ơn.

+0

đây là những gì tôi cần nhưng để kiểm tra kết nối internet im chạy một boolean sử dụng kết nối mananger nhưng nó không cho phép tôi truy cập getSystemService tôi cần phải mở rộng lớp học của tôi với Activity –

+0

@LukeBatley không cần phải mở rộng với hoạt động. xem chỉnh sửa của tôi cho nó. –

+0

@LukeBatley sử dụng 'mContext.getSystemService' cho nó. –

1

Điều này có thể không phải là cách tốt nhất để làm điều này và sẽ có những người khác có thể đề xuất một số giải pháp thay thế tốt hơn, nhưng đây là cách tôi sẽ làm gì.

Tạo lớp học với tất cả các chức năng và lưu nó thành có thể Utility.java.

Sử dụng đối tượng của lớp Tiện ích trong suốt mã mà bạn cần phải gọi bất kỳ chức năng nào trong số đó.

Utility myUtilObj = new Utility(); 
myUtilObj.checkInternet(); 

Hoặc có thể làm cho chức năng tĩnh và bạn chỉ có thể sử dụng Utility.checkInternet() có bao giờ bạn cần phải gọi nó.

+0

hi cảm ơn lời khuyên của bạn im không chắc chắn làm thế nào những gì bạn có nghĩa là bằng cách sử dụng một đối tượng của lớp này mặc dù những gì bạn nói có vẻ là tại chỗ trên –

+1

Những gì ông có nghĩa là "đối tượng của lớp tiện ích" – Swapnil

+0

Tôi đã cập nhật câu trả lời của tôi với mã để làm cho bản thân mình rõ ràng hơn. Tạo một đối tượng Utility và sau đó sử dụng nó để gọi các hàm. Nhưng yeah, làm cho các chức năng tĩnh là một lựa chọn sạch hơn. – Swayam

0

Bạn có thể tạo một lớp tiện ích, trong đó có một tập hợp các phương thức tĩnh (cho rằng một lớp như vậy không giữ bất kỳ trạng thái thực nào của chính nó). Bây giờ các phương thức tĩnh này có thể được gọi từ các phần khác nhau của ứng dụng.

3

Tạo lớp Utility như thế này:

public final class AppUtils { 

    private AppUtils() { 
    } 

@SuppressLint("NewApi") 
    public static void setTabColor(TabHost tabHost) { 
     int max = tabHost.getTabWidget().getChildCount(); 
     for (int i = 0; i < max; i++) { 
      View view = tabHost.getTabWidget().getChildAt(i); 
        TextView tv = (TextView) view.findViewById(android.R.id.title); 
        tv.setTextColor(view.isSelected() ? Color.parseColor("#ED8800") : Color.GRAY); 
        view.setBackgroundResource(R.color.black); 
      } 
     } 

} 

Bây giờ, từ bất kỳ loại ứng dụng Android, bạn có thể chức năng của Apputils như thế này:

AppUtils.setTabColor(tabHost); 
0

Chỉ cần tạo public lớp với static phương pháp, một cái gì đó như thế này ...

package com.example.test1; 

public class GlobalMethod { 

    public static String getHelloWorld() { 
     return "Hello, World!"; 
    } 

    public static int getAppleCount() { 
     return 45; 
    } 
} 

Bây giờ từ bất cứ nơi nào bạn có thể gọi cho các phương pháp ...

GlobalMethod.getHelloWorld(); 
GlobalMethod.getAppleCount(); 

Có nhiều cách để thực hiện, hãy xem các câu trả lời khác. Hy vọng điều này là hữu ích.

Các vấn đề liên quan