在多活动android中使用公共函数
我想在在多活动android中使用公共函数,android,dialog,fragment,extends,Android,Dialog,Fragment,Extends,我想在多活动中使用公共功能。我怎样才能做到这一点 在我的应用程序中,我显示了一个对话框,其中包含一些来自某个api的数据。和此对话框,用于多个活动现在我在所有活动中都实现了相同的对话框。现在,我想要所有活动的通用对话框我在活动中以及在适配器中使用此对话框 我怎么能这样做?使用扩展或使用片段。 我已经在扩展某个类,因此无法再次扩展(正如我所读到的,我们不能扩展多个类) 我还想向这个函数传递一些值,并根据return值调用另一个函数 private boolean allGroupsEdit(fin
多活动
中使用公共功能
。我怎样才能做到这一点
在我的应用程序中,我显示了一个对话框
,其中包含一些来自某个api的数据。和此对话框,用于多个活动<代码>现在我在所有活动中都实现了相同的对话框。现在,我想要所有活动的通用对话框<代码>我在活动中以及在适配器中使用此对话框
我怎么能这样做?使用扩展
或使用片段
。
我已经在扩展某个类,因此无法再次扩展(正如我所读到的,我们不能扩展多个类)
我还想向这个函数传递一些值,并根据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(){}
}
}
这里它不调用
CommonGroupBox.allGroupsEdit
firsts。它在if和else循环之后调用 只需创建一个普通的java类
public class Utility {
//your common method
public static void showDialog(Context context,int type){
//TODO task
}
}
现在,您可以在应用程序中的任何位置使用showDialog
方法
Utility.showDialog(ctx,type);
您可以创建一个扩展AppCompatActivity的抽象类,在其中实现您的方法,并使所有其他活动扩展该类:
public abstract class BaseActivity extends AppCompatActivity {
protected boolean allGroupsEdit(final String type) {
// ...
}
// Other methods
}
然后将您的活动实施为:
public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
allGroupsEdit("Some type");
}
...
要创建实用程序类,请执行以下操作: 1) 创建一个名为AppUtil的Java文件,该文件扩展活动 2) 选择要在应用程序中使用的常用方法 3) 在AppUtil java文件中编写函数 4) 将Java文件中的所有函数设置为静态,以便在活动中轻松调用(例如:AppUtil.yourMethod()) 5) 传递活动的上下文 下面是一个检查internet连接的简单示例:
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);
创建一个
实用程序
类,并在整个应用程序中使用它们的所有常用方法。感谢您的回复@Rustam。我是android新手。如何创建实用程序类以及如何调用它以及向它传递变量。我可以从中调用另一个函数吗?或者我可以从中获取数据吗?是的,你可以。如果您希望从方法中返回一些数据,请相应地提及方法的返回类型
。您可以创建多个模型,并在工具类@Rustam created中创建一个实例,以便在应用程序中传递数据。谢谢您的回复。我想调用另一个基于公共函数结果的函数。但现在我调用了公共函数,但在从公共函数返回值之前调用了另一个函数。我正在使用if和else,它在值return@OrvenitoSorry之前调用它,请您为您的问题添加一个编辑,并将您想要添加的内容包含到您的公共类中,以便更好地理解。正如我所说,我已经扩展了一些调用。所以从技术上讲,我不能扩展另一个类(正如我所读的)。
AppUtilities.isInternetConnected(YourActivity.this);