好的,我的问题是如何在Android上使用Microsoft翻译API?我的问题是我正在创建一个Android应用程序,它将从一个EditText中获取输入,当按下一个名为Translate的按钮时,它会将该文本翻译成另一种语言,然后将翻译后的文本设置为另一个EditText ...我有写了一些代码,你能告诉我那段代码有什么问题,因为它根本不工作,它没有输入,因此没有产生输出......谢谢......
package kalex.globaltranslate;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import com.memetix.mst.language.Language;
import com.memetix.mst.translate.Translate;
public class TranslateActivity extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
Translate.setClientId("MY ID");
Translate.setClientSecret("MY SECRET KEY");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_translate);
Button Trans = (Button)findViewById(R.id.translate);
Trans.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_translate, menu);
return true;
}
public void onClick(View v) {
//get the text entered
EditText Input = (EditText)findViewById(R.id.input);
EditText Output = (EditText)findViewById(R.id.output);
String In =Input.getText().toString();
//String Out;
try {
String Out = Translate.execute(In, Language.AUTO_DETECT, Language.FRENCH);
Input.setText(Out);
Output.setText(Out);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
首先,您可能希望阅读更多有关Java编程的内容。
您的对象实例应以小写字母命名。例如,EditText Input
应为EditText input
。
我建议您通过移动重新组织程序
EditText Input = (EditText)findViewById(R.id.input);
EditText Output = (EditText)findViewById(R.id.output);
在“Trans”实例化之后的开头。然后创建这些对象的全局变量,以便您可以在OnClick事件中访问它们。
您的onClick方法不会检查传递的视图的ID,您可以像这样射击自己的脚。对于具有侦听器的所有视图,使用case的情况制作switch语句是很常见的。 或者 - 您也可以为所有元素使用专用的ClickListener(效率较低,但仍然是系统的):
private OnClickListener translateClick = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
};
并将其设置为您的翻译按钮 - trans.setOnClickListener(translateClick);