0

のロジックに (単純な) 問題がありonClick()ます。

私のコードはそのように見えます。

Myobject myobject ;
onCreate() {
    ...
    myobject = ... ;
    Button button=...
    button.setOnClickListener(new OnClickListener() {   
        public void onClick(View v) {
        }
    });
}

私のonClick()では、myobject にアクセスできないことに気付きました。その値は常に null です (ただし、onClick().

だから、私の質問は簡単です。内部の myobject にアクセスするにはonClick()? (そして、myobject を final に設定せずに)。

回答ありがとうございます !!

4

4 に答える 4

1

これが部分的にフォーマットされたコードです。私のxmlレイアウトでは、下部にリストビューといくつかのボタンがあります。

このコードを起動してボタンをクリックすると、次の結果が得られます。

Asu:thenameimlookingfor

Asu:null

Asu:null

public class AlertSetupEditorActivity extends Activity{

private ListView listView2;
AlertSetupEditorAdapter adapter;

AlertSetUpObject asu = new AlertSetUpObject();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.alertsetupeditorlistview);  

    asu = getAsu();
    Log.d("debug","Asu :"+asu.getName());

Button button = (Button)findViewById(R.id.btn_gauche);
button.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        Log.d("debug","Asu :"+asu.getName());
                    Log.d("debug","Asu: "+AlertSetupEditorActivity.this.asu.getName());

    }
});


   }
于 2012-06-28T20:31:00.030 に答える
1

次のようなクラスレベルの変数にアクセスできます。

YourClassName.this.classLevelVariableName.someMethod();
于 2012-06-28T20:12:23.510 に答える
0

質問でコードが正しくフォーマットされていないため、わかりにくいですが、次のような答えに挑戦します。

MyObject を完全に参照するmyActivity.this.myobjectと、変数にアクセスできるはずです。アクティビティ内のコードから、アクティビティ クラス名をプレフィックスとして付けることで、アクティビティ 'this' にアクセスできます。

于 2012-06-28T20:08:10.380 に答える
0

これがあなたが探しているものです。また、使用方法によっては、スレッド化作業が必要になる場合もあります。

public class WineSearch extends Activity {

    private static String[] names;
    private static float[] ratings;
    private static int[] ids;

    ListView lv;
    Context ctx;
    TextView searchHeader;
    ProgressDialog prgDiag;
    Spinner spn;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ctx = this;

        searchHeader = (TextView) findViewById(R.id.SearchHeader);
        lv = (ListView) findViewById(R.id.WineListView);
        spn = (Spinner) findViewById(R.id.ListSpin);

        ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.list_choice, android.R.layout.simple_spinner_item); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spn.setAdapter(adapter);
        spn.setOnItemSelectedListener(new OnItemSelectedListener() {
          @Override
          public void onItemSelected(AdapterView<?> parent, View view, int position, long arg3) {
            Toast.makeText(parent.getContext(), parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
          }

          @Override
          public void onNothingSelected(AdapterView<?> arg0) {

          }     
        });

        prgDiag = new ProgressDialog(this);
        prgDiag.setCancelable(false);

        this.refreshList();
    }
于 2012-06-28T20:09:36.413 に答える