Объекты Android, доступные глобально в классе - PullRequest
1 голос
/ 07 июля 2011

как мне сделать объект представлений кнопками текстовых представлений, глобально доступных в упражнении ... я использовал приведенный ниже код, но теперь он работает ..

 private View dummy = (View) View.inflate(this, R.layout.main, null);
 private TextView p1 = (TextView)dummy.findViewById(R.id.player1other);
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(dummy);
 }
 .....
 .....
  public OnClickListener mCorkyListener = new OnClickListener() {

        @Override
    public void onClick(View v) {

        switch(v.getId())
        {
        case R.id.player1:      
        p1.setText(Integer.toString(scores.scores[0])); 

                       break;     }}

Ответы [ 5 ]

1 голос
/ 07 июля 2011

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

private View dummy;
 private TextView p1;
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(dummy);
        dummy = (View) View.inflate(this, R.layout.main, null);
        p1 = (TextView)dummy.findViewById(R.id.player1other);
 }
 .....
 .....
  public OnClickListener mCorkyListener = new OnClickListener() {

        @Override
    public void onClick(View v) {

        switch(v.getId())
        {
        case R.id.player1:      
        p1.setText(Integer.toString(scores.scores[0])); 

                       break;     }}
0 голосов
/ 07 июля 2011

Попробуйте:

private TextView p1;

@Override
public void onCreate(savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    p1 = (TextView) findViewById(R.id.player1other);
}

, а все остальное точно так же.

0 голосов
/ 07 июля 2011

Вам нужно сначала позвонить setContentView(), прежде чем использовать findViewByID(), чтобы findViewByID() узнать, где искать представления. Как это:

private TextView p1;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    p1 = (TextView)dummy.findViewById(R.id.player1other);
}

т.е. сначала просто объявите p1, затем вызовите соответствующий setContentView() в onCreate(), затем инициализируйте p1.

0 голосов
/ 07 июля 2011

Вместо использования этой строки ....

private View dummy = (View) View.inflate(this, R.layout.main, null); 

Используйте это

LayoutInflater l1 = this.getLayoutInflater();
private View dummy = l1.inflate(R.layout.main, null); 
0 голосов
/ 07 июля 2011

Объявите ваши представления как переменную класса

Class A{
EditText edit1;

}

edit1 будет доступен в любом месте класса

...