EditText не работает на фрагменте, кроме случаев, когда я нажимаю на другой фрагмент - PullRequest
0 голосов
/ 21 января 2019

Итак, у меня есть 3 фрагмента с именами MainTab, WiFiTab и CustomOVPNTab

На 1-й вкладке, которая является MainTab, я использую JSCH для захвата выходной команды и установки ее в EditText, вот код:

getLogs.setOnClickListener(new View.OnClickListener()
        {
            @Override

            public void onClick(View v) {
                new AsyncTask<Integer, Void, Void>(){
                    @Override
                    protected Void doInBackground(Integer... params) {
                        try {
                            executeSSHcommand(mainActivity.user, mainActivity.pass, mainActivity.host, mainActivity.port, "cat /etc/openvpn/server.ovpn");
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        return null;
                    }
                }.execute(1);
            }
        });

public void executeSSHcommand(String user, String password, String host, int port, String command)
    {
        JSch lJSCH;
        Session lSession;

        lJSCH = new JSch();

        String CommandOutput = null;

        try
        {
            lSession = lJSCH.getSession(user, host, port);
            lSession.setConfig("StrictHostKeyChecking", "no");
            lSession.setPassword(password);
            lSession.connect();

            ChannelExec lChannelExec = (ChannelExec)lSession.openChannel("exec");
            lChannelExec.setCommand(command);

            ((ChannelExec)lChannelExec).setErrStream(System.err);
            InputStream ins=lChannelExec.getInputStream();

            lChannelExec.connect();
            byte[] tmp=new byte[1024];
            while(true)
            {
                while(ins.available()>0) {
                    int i = ins.read(tmp, 0, 1024);
                    if (i < 0) break;
                    getOutput.setText(new String(tmp, 0,i));
                }
                if(lChannelExec.isClosed())
                {
                    if(ins.available()>0) continue;
                    getOutput.setText("exit-status: "+lChannelExec.getExitStatus());
                    break;
                }
                try{Thread.sleep(1000);}catch(Exception ee){}
            }
            lChannelExec.disconnect();
            lSession.disconnect();
        }
        catch(Exception e)
        {

        }
    }

Это только установит текст в getTutput MainTab, если я щелкну фрагмент CustomOVPNTab и вернусь к фрагменту MainTab, в CustomOVPNTab нет ничего особенного, нет написанных просто кодов, но я должен сначала щелкнуть его до того, как getOutput установил текст в MainTab, почему это так??Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...