【问题标题】:TextView in static void main静态 void main 中的 TextView
【发布时间】:2019-06-21 06:54:33
【问题描述】:

所以我正在尝试获取翻译后的文本并将其显示在我的文本视图中。
我该怎么做?而且我注意到翻译必须在静态 void main 中使用它...如果不是会出现问题。
(java初学者)

public class TranslateText extends AppCompatActivity {
TextView TText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_translate_text);
    TText = findViewById(R.id.TranslatedView);

}

public static void main(String[] args) throws IOException {
    String text = "Hello world!";
    System.out.println("Translated text: " + translate("en", "zh-CN",text));
}

private static String translate(String langFrom, String langTo, String text) throws IOException {

    String urlStr = "https://script.google.com/macros/s/AKfycbzjyCsF9eoo7MR38wVg0WFU9oxc9I2aU4Bt4YPEiqtRLJLx0XU/exec" +
            "?q=" + URLEncoder.encode(text, "UTF-8") +
            "&target=" + langTo +
            "&source=" + langFrom;
    URL url = new URL(urlStr);
    StringBuilder response = new StringBuilder();
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestProperty("User-Agent", "Mozilla/5.0");
    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();
    return response.toString();
}

【问题讨论】:

  • 你为什么在 android 应用中使用 public static void main(String[] args){}?
  • 我指的是这里 - stackoverflow.com/a/48159904/9589884 我正在做翻译的事情,如果 translate("en", "zh-CN",text) 在公共静态之外,它就不起作用无效的主要。 @GaneshGudghe
  • 那么无论如何我可以使用翻译文本(zh-CN)并在我的文本视图中显示它吗?
  • 使用 asyntask 并在 doinbackground 中执行你的 translate()

标签: java android static


【解决方案1】:

Android 不需要像在 Java 应用程序中那样执行 main() 方法。
而且您不需要编写那些 http 调用来转换字符串值。
Android 为您提供了一个 string.xml 文件,您可以在其中创建自己的文件 WRT 来进行本地化,但关键这些字符串应该相同,您可以将其分配给 textview。

【讨论】:

  • 翻译部分没有问题,我测试过了。但我不知道如何在我的文本视图中使用 translate("en", "zh-CN",text)。对不起,我是新手
【解决方案2】:

使用类似的东西。

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class TranslateText extends AppCompatActivity {
TextView TText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_translate_text);
    TText = findViewById(R.id.TranslatedView);
    String text = "Hello world!";
    new TransText(text).execute();
}


private String translate(String langFrom, String langTo, String text) throws IOException {

    String urlStr = "https://script.google.com/macros/s/AKfycbzjyCsF9eoo7MR38wVg0WFU9oxc9I2aU4Bt4YPEiqtRLJLx0XU/exec" +
            "?q=" + URLEncoder.encode(text, "UTF-8") +
            "&target=" + langTo +
            "&source=" + langFrom;
    URL url = new URL(urlStr);
    StringBuilder response = new StringBuilder();
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestProperty("User-Agent", "Mozilla/5.0");
    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();
    return response.toString();
}

private class TransText extends AsyncTask<Void, Void, String> {
    String text;

    public TransText(String text) {
        this.text = text;
    }

    @Override
    protected String doInBackground(Void... voids) {
        String result = null;
        try {
            result = translate("en", "zh-CN", text);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if(result != null){
            TText.setText(result);
        }
    }
}
}

【讨论】:

  • 线程“主”java.lang.NoSuchMethodException 中的异常:com.example.jt.audiototextconversion.TranslateText.main([Ljava.lang.String;) at java.lang.Class.getMethod(Class .java:1786)
  • 我在这里指的是 stackoverflow.com/a/48159904/9589884。但是想在 textview 中使用它,是吗?
  • 我已经编辑了答案,请用上面的代码替换整个班级
猜你喜欢
  • 1970-01-01
  • 2018-10-22
  • 2012-11-06
  • 2022-11-10
  • 2012-07-16
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
相关资源
最近更新 更多