在多个 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);
我想在 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);