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上,并将此字符串设置为我的一个文本视图。