0

編集:私の元の質問は行の下にあります。ボタンの設定とクリック機能の割り当てには、もっと単純なアプローチを採用することにしました。以下のリンクで見つけました。彼は2つのアプローチの違いをうまく説明しています...

Android ユーザー インターフェース デザイン: 基本的なボタン


これはよくある質問だと思いますが、私が見たすべての例で、問題は見過ごされてきた単純な詳細であるように見え、詳細は決して同じではありません. これが基本だとおもいます。私は Android 用のプログラミングを始めたばかりで、これは既存のコードの変更です。

アプリには空白のページに 1 つのボタンがあり、ボタンをクリックすると、Amarino API を介して Arduino に int が送信されます。これが私のMainActivityコードです

package com.example.buttontest1;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import at.abraxas.amarino.Amarino;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;


public class MainActivity extends Activity{

    private Button button;
    private static final String DEVICE_ADDRESS = "00:06:66:4B:E4:23";
    public Context foo1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        Amarino.connect(this, DEVICE_ADDRESS);        
        setContentView(R.layout.main); 
        addListenerOnButton();        
    }

    public void addListenerOnButton() {

        //Select a specific button to bundle it with the action you want
        button = (Button) findViewById(R.id.button1);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'j', 1);
            }

        });

    }

    protected void onStop() {
        super.onStop();
        // stop Amarino's background service, we don't need it any more 
        Amarino.disconnect(this, DEVICE_ADDRESS);
    }
}

表示されるエラーは次のとおりです。38行目を参照してください。

Amarino 型のメソッド sendDataToArduino(Context, String, char, int) は、引数 (new View.OnClickListener(){}, String, char, int) には適用されません。

コンテキストとメソッドに問題があるのでしょうか。

4

3 に答える 3

0

Teh api は次のオブジェクトを想定していますが、次のオブジェクトにContext渡しますthis

            Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'j', 1);

これは Context のオブジェクトではなく、オブジェクトですOnClickListener

于 2013-08-17T04:17:18.963 に答える
0
Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'j', 1);

thishere はView.OnClickListener's現在のインスタンスを指します。コンパイルエラーは基本的にsendDataToArduino()、最初の引数を期待してContextいますが、OnClickListener

于 2013-08-17T04:17:35.387 に答える
0

sendDataToArduinoは、最初の引数が 型であると想定していますContext。あなたはそれを渡していView.onClickListenerます。最初の引数として渡す代わりに、ここthisで説明したようにコンテキストを設定して、それを最初の引数として渡してみてください。

super 呼び出しの後に onCreate メソッドに次を追加してみてください。

MainActivity.context = getApplicationContext();

また、onCreate の後に次のメソッドを追加します。

public static Context getAppContext() {
    return MainActivity.context;
}

メソッドを次のように呼び出します。

Amarino.sendDataToArduino(getApppContext(), DEVICE_ADDRESS, 'j', 1);
于 2013-08-17T04:17:40.803 に答える