2014-11-15 5 views
0

Я пытаюсь создать базовую программу, в которой вы нажимаете кнопку, и она добавляет целое число. У меня возникли проблемы с обновлением текстового вида.Использование простого текстового вида и виджетов кнопок в android

package com.example.curtis.simpleapplication; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
    int num; 
    TextView numview; 

    private void updateNumber(){ 
     TextView numview = (TextView)findViewById(R.id.Number); 
     numview.setText(num); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     setupButton(); 
    } 
    private void setupButton() { 
     Button button = (Button) findViewById(R.id.Button); 
     button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       num = num + 1; 
       numview.setText(num); 
      } 

     }); 
    } 

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

ответ

0

Поместите этот код в функции OnClick

Num = Num + 1; updateNumber();

1

У вас есть два разных объекта с одинаковым именем, и это вызовет ошибку.

один из них определен в вашем классе (TextView numview;), а другой - в вашем номере обновления функции.

в вашем методе onClick вы хотите изменить numView, определенный в вашем классе, и оно не инициализировано. вы должны добавить изменить свой код:

package com.example.curtis.simpleapplication; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
    int num; 
    TextView numview; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     numview = (TextView)findViewById(R.id.Number); 
     setupButton(); 
    } 
    private void setupButton() { 
     Button button = (Button) findViewById(R.id.Button); 
     button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       num = num + 1; 
       numview.setText(num); 
      } 

     }); 
    } 
3

Здесь есть несколько ошибок. Во-первых, вы никогда не звоните updateNumber(), поэтому numview никогда не устанавливается. Кроме того, у вас есть два TextView numView один раз глобальный в вашем MainActivity и снова в updateNumber(). Существует лучший способ сделать это. Но сначала пойти в activity_main.xml файл и в теге кнопки добавить линию android:onClick="onClick" что-то вроде этого:

<Button 
    android:id="@+id/button1" 
    ... 
    android:onClick="onClick"/> 

Далее в вашем MainActivity.java, добавьте следующие строки кода:

package com.example.curtis.simpleapplication; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
    int num = 0; 
    TextView numview; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     numview = (TextView)findViewById(R.id.Number); 
    } 

    public void onClick(View view){ 
     num += 1; 
     numview.setText(String.valueOf(num)); 
    } 
} 

OnClick () будет автоматически вызываться, когда ваша кнопка будет нажата из-за свойства .

0

Вы никогда не называя updateNumber()

package com.example.curtis.simpleapplication; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
int num=0; 
TextView numview; 

private void updateNumber(int number){ 
    numview = (TextView)findViewById(R.id.Number); 
    numview.setText(number); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    setupButton(); 
} 
private void setupButton() { 
    Button button = (Button) findViewById(R.id.Button); 
    button.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      num = num + 1; 
      updateNumber(num); 
     } 

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