0

非静的ハンドラーを静的ハンドラーに変換するのは非常に困難です。私はさまざまなアプローチを試みましたが、毎回厄介なことをしてしまいます. 提供されたコードで、これを達成する方法を修正してください。私は 1 つの例を試しましたが、ほとんどの変数と関数をハンドラーから参照される静的に変更する必要がありました。しかし、それでも追加のエラーが発生しました。

public class MainActivity extends Activity implements Runnable {

private TextView textView;
boolean connectionToTupleSpace=false;
private TupleSpace ts = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView) findViewById(R.id.myText);
    textView.setText("it is testing");
    findViewById(R.id.login_button).setOnClickListener(buttonLogin);
}

public final Button.OnClickListener buttonLogin = new Button.OnClickListener() {
    @Override
    public void onClick(View v) {
        Thread thread = new Thread(MainActivity.this);
        thread.start();
    }
};

@Override
public void run() {
    Looper.prepare();

    try {
        ts = new TupleSpace("192.168.1.100",2525,"Orientation");
        connectionToTupleSpace = true;
    }catch (TupleSpaceException e) {
        connectionToTupleSpace = false;
        e.printStackTrace();
    }
    handler.sendEmptyMessage(0);
}

private Handler handler = new Handler() {

    private Looper myLooper;

    @Override
    public void handleMessage(Message msg) {
        if(connectionToTupleSpace == true)
        {
            Toast.makeText(getBaseContext(), " Tuple Space Server is Connected", Toast.LENGTH_SHORT).show();
            showTuples();
        }
        else
        {
            /*Toast.makeText(getBaseContext(), " No connection to Tuple Space Server", Toast.LENGTH_SHORT).show();*/
            showDialog("Connection", "there is no connection");

        }
        myLooper = Looper.myLooper();
        Looper.loop();
        myLooper.quit();
    }
};

public void showTuples()
{

    Tuple template = new Tuple(String.class, Integer.class);

    Tuple[] returnTuple = null;
    try {
        returnTuple = ts.readAll(template);
    } catch (TupleSpaceException e) {
        e.printStackTrace();
    }

    int num = returnTuple.length;
    if (num == 0)
        System.out.print("No tuples in the space");
    else
        for(int i=0;i<num;i++)
        {
            System.out.print("\nTotal tuples are" + num+"\nYou found " + returnTuple[i]);
            showDialog(returnTuple[i].getField(0).toString(),returnTuple[i].getField(1).toString());

        }
}

private void showDialog(String title, String message)
{
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.setPositiveButton("OK", null);
    builder.show();
}

}

4

1 に答える 1