在多个 activity android 中使用公共函数

Using common function in multiple activity android

我想在 multiple activity 中使用 common function。我怎样才能做到这一点?

在我的应用程序中,我显示了一个 Dialog box,其中有一些数据来自 api。而这个对话框,用在多个活动中。 Right now I have implemented same Dialog box in all activities。现在我想要所有活动的通用对话框。 I am using this Dialog box in activity as well in adapter.

我该怎么做?使用 extends 或使用 fragment。 我已经扩展了一些 class,所以我不能再扩展(正如我所读,我们不能扩展超过一个 class)。

我还想将一些值传递给此函数,并根据 return 值调用另一个函数。

private boolean allGroupsEdit(final String type) {
    String allGroups = "allGroups";
    final String url = Constants.CONSTANT_SERVER_URL + Constants.CONSTANT_GET_GROUPS_URL;
    final ProgressDialog dialog = new ProgressDialog(context);
  dialog.setMessage(context.getResources().getString(R.string.please_wait));
    dialog.show();

    StringRequest allGroupsRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String s) {
            final SharedPreferences sharedPreferencesRemember = PreferenceManager.getDefaultSharedPreferences(context);
            sessionGroupId = sharedPreferencesRemember.getString(Constants.CONSTANT_session_group_id, "");

            try {
                JSONObject jsonObject = new JSONObject(s);
                JSONArray jsonArray = jsonObject.optJSONArray(Constants.CONSTANT_data);
                int a = jsonArray.length();
                for (int i = 0; i < jsonArray.length(); i++) {

                    JSONObject schObj = jsonArray.optJSONObject(i);
                    schData = schObj.optJSONArray(Constants.CONSTANT_data);
                }
            dialog.dismiss();
                final Dialog dialog = new Dialog(context);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                dialog.setContentView(R.layout.dialog_checkbox_options);
                Window window = dialog.getWindow();
                window.setLayout(DrawerLayout.LayoutParams.MATCH_PARENT, DrawerLayout.LayoutParams.WRAP_CONTENT);

               if(..someting){
                 editPublicComments(type);
               }else{
                 editPublicPosts(type);
               }
              }catch(){}
       }
  }

注意:这是一个很长的函数,所以我粘贴了一些代码以便基本理解。如果您需要更多详细信息,请告诉我。提前致谢,欢迎编辑和建议。

Edit_1: 我希望整个函数通用。 Edit_2: 如何从 utils return 值到 activity ?

Edit_3: 现在我在 class 中创建了一个静态函数,我可以从我的 activity 中调用它。现在我想根据通用函数结果调用另一个函数。 (我正在使用 SharedPreferences 来存储常用函数的值)。

但是在我的activity调用普通函数的地方,我并没有先执行普通函数。它调用另一个函数,然后它调用普通函数,完成普通方法后,它不再调用另一个方法。

我只想根据常用函数的结果调用另一个函数 true or false

 boolean abab = CommonGroupBox.allGroupsEdit(context,"share", selectedPostId, localGrpArray);
 if (abab){
   boolean pubFlag = pref.getBoolean("isPublicFlag", false);
   String qType = pref.getString("questionType","0");
   if (pubFlag) {
      editPublicComments(qType);
   }else{
      ediComments(qType);
   }
 else{
   boolean pubFlag = pref.getBoolean("isPublicFlag", false);
   String qType = pref.getString("questionType","0");
   if (pubFlag) {
     PublicComments(qType);
   }else{
     Comments(qType);
   }
  }

这里没有先调用CommonGroupBox.allGroupsEdit。它在 if 和 else 循环之后调用。

只是创建一个普通的javaclass

 public class Utility {

    //your common method
    public static void showDialog(Context context,int type){

       //TODO task
    }
}

现在您可以在应用程序的任何位置使用 showDialog 方法

Utility.showDialog(ctx,type);

您可以创建一个扩展 AppCompatActivity 的抽象 class,在那里实现您的方法并使所有其他活动扩展此 class:

public abstract class BaseActivity extends AppCompatActivity {

    protected boolean allGroupsEdit(final String type) {
        // ...
    }

    // Other methods
}

然后将您的 activity 实现为:

public class MainActivity extends BaseActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        allGroupsEdit("Some type");
    }
...

创建实用程序Class:

1) 创建一个名为 AppUtil 的 Java 文件,扩展 Activity.

2) Select 您将在应用程序中使用的常用方法。

3) 在AppUtiljava文件中编写函数

4) 在您的 Java 文件中将所有函数设为静态,以便在您的 activity 中轻松调用(例如:AppUtil.yourMethod() )

5) 传递 Activity.

的上下文

这是一个检查互联网连接的简单示例:

public class AppUtilities extends Activity {

public static boolean isInternetConnected(Context context) {
    ConnectivityManager cm = (ConnectivityManager) 
    context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting() && 
    netInfo.isAvailable();
  }
}

并且您可以从应用程序的任何位置轻松调用此方法 例子::

AppUtilities.isInternetConnected(YourActivity.this);