2

わかりました、私の質問は、Android 用の Microsoft 翻訳 API を使用する方法ですか? 私の問題は、ある EditText から入力を受け取る Android アプリを作成していて、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();
                }



}
}
4

1 に答える 1

2

まず、一般的な Java プログラミングについてもう少し読みたいと思うかもしれません。

オブジェクト インスタンスには小文字の名前を付ける必要があります。たとえば、EditText Inputする必要がありますEditText input

移動して、プログラムを再編成することをお勧めします

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

最初に、「Trans」のインスタンス化の後。次に、これらのオブジェクトのグローバル変数を作成して、OnClick イベントでアクセスできるようにします。

onClick メソッドは、渡されたビューの ID をチェックしないため、このように自分自身を撃つことができます。リスナーを持つすべてのビューに対して、ケースを使用して switch ステートメントを作成するのが一般的です。別の方法として、すべての要素に専用の ClickListener を使用することもできます (効率は劣りますが、それでも体系的です)。

private OnClickListener translateClick = new OnClickListener() {

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

それを翻訳ボタンに設定します - trans.setOnClickListener(translateClick);

于 2012-10-26T06:19:57.157 に答える