2012-06-28 2 views
0

У меня есть (простая) проблема с логикой с onClick().onClick() простой выпуск

Мой код выглядит так.

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

В моей onClick(), я замечаю, что я не могу иметь доступ к MyObject. Его значение всегда пустой (но не вне onClick().

Итак, мой вопрос прост. Как получить доступ к MyObject внутри onClick()? (И без установленного MyObject в финале).

Спасибо за ответ !!

+0

сообщения ваш полный исходный код ... это поможет понять .... –

+0

Вы должны просмотреть свои сообщения, прежде чем публиковать их ... потому что это форматирование абсолютно ужасно. –

ответ

0

трудно сказать, как ваш код правильно не отформатирован в вашем вопросе, но я буду принимать удар в ответ является следующее.

Если вы полностью ссылаться на свой MyObject, такие как myActivity.this.myobject вы должны быть в состоянии получить доступ переменная. Из кода внутри действия вы можете выполните доступ к этим действиям, предварительно указав им имя класса действий.

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

Вы можете получить доступ к переменным уровня класса, как,

YourClassName.this.classLevelVariableName.someMethod(); 
1

Вот неполный отформатированный код. В моем расположении xml у меня есть список и некоторые кнопки внизу.

Если я запустить этот код и нажмите на моей кнопке, я буду иметь следующий результат:

АГУ: thenameimlookingfor

АГУ: нулевой

АГУ: нулевой

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

    } 
}); 


    } 
Смежные вопросы