JAVA—将android应用程序转换为片段样式的应用程序
我的应用程序有JAVA—将android应用程序转换为片段样式的应用程序,java,android,android-fragments,Java,Android,Android Fragments,我的应用程序有main.xml和MainActivity。我想把它转换成一个标签式的应用程序。借助于此,我成功地制作了一个具有选项卡式风格的UI 现在,我必须将main活动中的代码(非选项卡式)放到片段中。我不知道怎么做。当我把代码放到我的工具fragment.java中时,它就不起作用了 这是我的密码: //To get ip address using netcfg private String ipnc() { int e = doNETCFG().indexOf("10.");
main.xml
和MainActivity
。我想把它转换成一个标签式的应用程序。借助于此,我成功地制作了一个具有选项卡式风格的UI
现在,我必须将main活动中的代码(非选项卡式)放到片段中。我不知道怎么做。当我把代码放到我的工具fragment.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();
}
//使用netcfg获取ip地址
私有字符串ipnc()
{
int e=doNETCFG().indexOf(“10”);
如果(e==-1)
{
返回“”;
}
其他的
{
字符串ipnc1=doNETCFG()。子字符串(e,e+15);
字符串ipnc2[]=ipnc1.split(“/”);
字符串ipnc3=ipnc2[0];
返回ipnc3;
}
}
//从命令行生成netcfg的步骤
公共字符串doNETCFG()
{
字符串str=null;
尝试
{
processlocalprocess=Runtime.getRuntime().exec(“/system/bin/netcfg”);
BufferedReader localBufferedReader=新的BufferedReader(新的InputStreamReader(localProcess.getInputStream());
char[]arrayOfChar=新字符[4096];
StringBuffer localStringBuffer=新的StringBuffer();
while(true)
{
int i=localBufferedReader.read(arrayOfChar);
如果(i=1)
返回;
MediaPlayer localMediaPlayer=MediaPlayer.create(getApplicationContext(),0x7f040000);
localMediaPlayer.start();
i++;
尝试
{
sleep(100+localMediaPlayer.getDuration());
localMediaPlayer.release();
}
捕获(中断异常局部中断异常)
{
}
}
}
}
.start();
}
我该怎么办?我必须把它放到另一个活动中,并在片段中调用它吗?如果是这样,怎么办?
或者将其转换为一段代码可执行文件并在那里运行?我该怎么做
我是android编程的新手。谢谢 片段完成了活动所做的大部分事情。引入它们的原因(至少是其中一个原因)是为了让您可以将代码放在它们中,而不是放在应用程序的活动中。如果你这样想,你会注意到你只需要少量的活动
我不知道你所说的“将其转换为片段中的可执行代码”是什么意思。您可以将代码放在片段中(使用方法),然后简单地调用这些方法
如果您不确定片段是如何工作的,我强烈建议您阅读
<>我希望这能让你知道如何让你的代码在片段中工作。当你把一个应用程序转换成基于片段的结构时,你必须考虑一件事:上下文对于活动中的所有片段都是相同的。您可以通过调用getActivity()
获得它。因此,请先保存您的上下文,并在任何需要上下文的地方使用它
根据您的问题,您正在开发带有选项卡的应用程序。因此,您可能需要创建与选项卡数量相同的片段。您可以将每个选项卡的代码放入相应的片段中
现在,要在片段之间进行通信,最好的方法是在父活动中使用回调
可以找到一个实现片段的简单教程
片段之间的通信解释为“我已经使用片段成功创建了一个选项卡式界面,但我不知道如何将代码转换为片段中的可执行代码。”--这意味着什么?我的应用程序有main.xml和MainActivity。在本教程的帮助下,我想将其转换为选项卡式应用程序。现在,我必须将main活动中的代码(非选项卡式)放到片段中。我不知道怎么做。当我把代码放到我的ToolsFragment.java中时,它就不起作用了。谢谢!我已经编辑了我的问题。我读过很多关于碎片的教程和文章。我无法让它工作。谢谢你的回答。可以在片段中对我的代码运行doNETCFG()吗?我已将此代码放在我的ToolsFragment.java上,并将此字符串设置为我的一个文本视图。