0

我有一个(简单的)逻辑问题onClick()

我的代码看起来像这样。

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

在 myonClick()中,我注意到我无法访问 myobject。它的值始终为 null(但不在onClick().

所以,我的问题很简单。如何访问myobject里面onClick()?(并且没有将 myobject 设置为 final)。

谢谢回答 !!

4

4 回答 4

1

这是部分格式化的代码。在我的 xml 布局中,我在底部有一个列表视图和一些按钮。

如果我启动此代码并单击我的按钮,我将得到以下结果:

Asu : thenameim正在寻找

阿苏:空

阿苏:空

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

看看我是如何设置我的 Context ctx 的,这就是你要找的。根据使用方式,您可能还需要做一些线程工作。

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 回答