gpt4 book ai didi

JAVA - 将 Android 应用程序转换为 fragment 样式应用程序

转载 作者:行者123 更新时间:2023-12-01 12:37:40 25 4
gpt4 key购买 nike

我的应用程序有 main.xmlMainActivity。我想将其转换为选项卡式应用程序。借助这个tutorial ,我已经成功制作了一个带有选项卡式风格的UI。

现在我必须将 MainActivty 中的代码(不是选项卡式样式)放入 fragment 中。我不知道该怎么做。当我将代码放入 ToolsFragment.java 时,它不起作用。

这是我的代码:

//To get ip address using netcfg
private String ipnc()
{
int e = doNETCFG().indexOf("10.");
if (e == -1)
{
return "";
}
else
{
String ipnc1 = doNETCFG().substring(e, e + 15);
String ipnc2[] = ipnc1.split("/");
String ipnc3 = ipnc2[0];
return ipnc3;
}
}

//To generate netcfg from command line
public String doNETCFG()
{
String str = null;
try
{
Process localProcess = Runtime.getRuntime().exec("/system/bin/netcfg");
BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localProcess.getInputStream()));
char[] arrayOfChar = new char[4096];
StringBuffer localStringBuffer = new StringBuffer();
while (true)
{
int i = localBufferedReader.read(arrayOfChar);
if (i <= 0)
{
localBufferedReader.close();
localProcess.waitFor();
str = localStringBuffer.toString();
break;
}
localStringBuffer.append(arrayOfChar, 0, i);
}
}
catch (IOException localIOException)
{
Log.e("TAG", localIOException.getStackTrace().toString());
}
catch (InterruptedException localInterruptedException)
{
Log.e("TAG", localInterruptedException.getStackTrace().toString());
}
return str;
}

//To enable/disable mobile data
private void setMobileDataEnabled(Context context, boolean enabled)
{
final ConnectivityManager conman;
conman =
(ConnectivityManager)context.getSystemService
(Context.CONNECTIVITY_SERVICE);
final Class conmanClass;
try
{
conmanClass =
Class.forName(conman.getClass
().getName());
final Field
iConnectivityManagerField =
conmanClass.getDeclaredField
("mService");
iConnectivityManagerField.
setAccessible(true);
final Object
iConnectivityManager =
iConnectivityManagerField.get
(conman);
final Class
iConnectivityManagerClass =
Class.forName
(iConnectivityManager.getClass
().getName());
final Method
setMobileDataEnabledMethod =
iConnectivityManagerClass.
getDeclaredMethod
("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.
setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
}
catch
(ClassNotFoundException e)
{
e.printStackTrace();
}
catch
(InvocationTargetException e)
{
e.printStackTrace();
}
catch
(NoSuchMethodException e)
{
e.printStackTrace();
}
catch
(IllegalAccessException e)
{
e.printStackTrace();
}
catch
(NoSuchFieldException e)
{
e.printStackTrace();
}
}

//To play success alert tone
public void playAlertTone()
{
new Thread()
{
public void run()
{
int i = 0;
while (true)
{
if (i >= 1)
return;
MediaPlayer localMediaPlayer = MediaPlayer.create(getApplicationContext(), 0x7f040000);
localMediaPlayer.start();
i++;
try
{
Thread.sleep(100 + localMediaPlayer.getDuration());
localMediaPlayer.release();
}
catch (InterruptedException localInterruptedException)
{
}
}
}
}
.start();
}

我该怎么办?我是否必须将其放入另一个 Activity 并在 fragment 中调用它?如果是这样的话,怎么办?或者将其转换为 fragment 中的可执行代码并在那里运行?我怎样才能做到这一点?

我是android编程的新手。谢谢!

最佳答案

当您将应用程序转换为基于 fragment 的结构时,您必须考虑一件事,即 Activity 中所有 fragment 的上下文都是相同的。您可以通过调用getActivity()来获取它。因此,首先保存您的上下文,然后在您需要上下文的任何地方使用它。

根据您的问题,您正在开发一个带有选项卡的应用程序。因此,您可能必须创建与选项卡一样多的 fragment 。您可以将每个选项卡的代码放在相应的 fragment 中。

现在,要在 fragment 之间进行通信,最好的方法是在父 Activity 中使用回调。

可以找到实现 fragment 的简单教程 HERE

fragment之间的通信解释HERE

关于JAVA - 将 Android 应用程序转换为 fragment 样式应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com