onClick()简单的问题

时间:2012-06-28 20:02:22

标签: android onclick

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

我的代码看起来像那样。

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

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

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

感谢您的回答!!

4 个答案:

答案 0 :(得分:1)

您可以访问类级变量,例如

YourClassName.this.classLevelVariableName.someMethod();

答案 1 :(得分:1)

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

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

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());

    }
});


   }

答案 2 :(得分:0)

很难说你的代码在你的问题中没有正确格式化,但我会抓住以下答案。

如果您完全引用MyObject,例如myActivity.this.myobject,您应该能够访问该变量。从活动中的代码中,您可以通过在活动类名称前添加“this”活动来访问它们。

答案 3 :(得分: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();
    }