0

と の 2 つのクラスがMain - ActivityありSecond - AsyncTaskます。mymethodボタンクリックで発射したい。

私が試してみました。

public class Second extends AsyncTask<Void, Void, Void> {

    Main main;

    @Override
    protected void onProgressUpdate(Void... values) {
    // TODO Auto-generated method stub
    super.onProgressUpdate(values);

    main = new Main(); //Wrong because is an Activity

    Button con = (Button)activity.findViewById(R.id.con);

    con.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
             // TODO Auto-generated method stub
            main.mymethod(v);
        }
     });
   }
}

しかし、それはスローしjava.lang.IllegalStateException: System services not available to Activities before onCreate()ます。

4

3 に答える 3

2

mainインスタンスに設定したことがないように見えるので、 null.

次のようなことをする必要があります

Main main = new Main();

実際、内部クラスから参照しているため、内部クラスから参照できるように finalmainにする必要もあります。main

final Main main = new Main();
于 2013-10-12T23:52:43.767 に答える
0

mymethod(View v) を本当に呼び出す必要がある場合は、別の別のクラス内に記述します。静的メソッドとして使用すると、クラスのインスタンスを取得せずにそのメソッドを使用するのに役立ちます。他のアクティビティのメソッドは、アクティビティであるため、使用する前に onCreate を実行する必要があるため、おそらく使用することはできません。それが役に立てば幸い。

于 2013-10-13T10:19:03.513 に答える