4

膨大な量のコード/データを含むメインの Activity クラスが 1 つあります。だから私はそれを短く読みやすくしたいので、要件に従っていくつかの機能を処理する.javaファイルを1つ作成したいと思います。お気に入り

Button b=(Button)findviewById(R.id.b1);
b.setOnClickListener(this);

非活動クラスから乾杯を表示します。だから私の質問は、非アクティビティでボタンを処理/初期化する方法は? アクティビティから非アクティビティ クラスへのコンテキストの受け渡しから ID を取得できますか?

4

3 に答える 3

4

これが私のために働いていることを試してください。あなたにも役立つかもしれません!

NonActivityClass:

public class NonActivityClass {

    Context context;
    View v;
    public NonActivityClass(Context context, View v) {
        this.context = context;
        this.v = v;
    }

    public void test() {
        Button btn = (Button) v.findViewById(R.id.btn);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(context, "Hello I am inside Non Activity Class",
                        1).show();

            }
        });
    }
}

主な活動:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View v = getLayoutInflater().inflate(R.layout.activity_main, null);
        setContentView(v);
        NonActivityClass nac = new NonActivityClass(MainActivity.this, v);
        nac.test();
    }
}
于 2013-09-02T07:57:58.250 に答える
0

はい、他のJavaクラスにOnClickListenerを実装することでこれを行うことができ、これをアクティビティクラスで呼び出します。

Button b=(Button)findviewById(R.id.b1);
b.setOnClickListener(new NonActivityClass(this));

アクティビティ コンテキストを NonActivityClass に渡します。これにより、NonActivityClass の UI コンポーネントにアクセスできるようになりますが、メモリ リークが発生する可能性があることに注意してください。

そして、次のように OnClickListener を実装します。

public class NonActivityClass implements OnClickListener 
{
    void onClick(View oView)
    {
        // Do your stuff here
    }
}
于 2013-09-02T07:38:47.303 に答える
0

メインクラスにonclickリスナーを実装するだけで済みますが、インターフェースを使用して、リスナーのコンテンツを他のクラスに外部化します。

例:

コンストラクター、いくつかのメソッド、およびオブジェクトを含むクラス ManageClick.java を作成します。

属性

public OnClickListenerCustom _onClickListenerCustom;

そしてインターフェース

Interface OnClickListenerCustom{
    public void onclick();
    public void onItemClick();
}

setOnClickListenerCustom のような別のメソッド:

public void setOnClickListenerCustom(OnClickListenerCustom listener){
    this._onClickListenerCustom = listener;
}

メイン クラス MainActivity.java で onclick() メソッドを実装し、oncreate でリスナーを設定します。

public ManageClick _clickManager;

_clickManager = new ManageClick();
_clickManager.setOnClickListener((OnClickListenerCustom) this.MainActivity);

onclick メソッドで終了するには、呼び出すだけです。

_clickManager.onClick() or _clickManager.onItemClick()
于 2013-09-02T07:54:05.657 に答える