2012-10-26 47 views
2

好吧,我的问题是如何使用Microsoft翻译API为Android?我的问题是,我正在创建一个android应用程序,它将从一个EditText获取输入,并且当按下一个名为Translate的按钮时,它会将该文本翻译成另一种语言,然后将翻译的文本设置为另一个EditText ...我有编写一些代码,你能告诉我有什么不好的代码,因为它不工作,不考虑输入,因而不会产生输出...谢谢...如何使用Microsoft Translation API for android?

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(); 
       } 



} 
} 

回答

2

首先,你可能想通常阅读更多关于Java编程的内容。

您的对象实例应该用小写字母命名。例如EditText Input应该是EditText input

我建议您重新整理自己的程序,通过移动

EditText Input = (EditText)findViewById(R.id.input); 
EditText Output = (EditText)findViewById(R.id.output); 
之初

,“跨”实例化之后。然后制作这些对象的全局变量,以便您可以在OnClick事件中访问它们。

您的onClick方法不会检查传递的视图的ID,并且您可能会像这样拍摄自己的脚。通常为具有侦听器的所有视图创建一个switch语句。 或者 - 所有元素,你也可以有专门的ClickListeners(效率较低,但仍系统):

private OnClickListener translateClick = new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        // TODO 
      } 
     }; 

并将其设置为你的翻译按钮 - trans.setOnClickListener(translateClick);

+0

谢谢你现在工作得很好...... :) – Kalex