2016-11-07 201 views
0

我与问题战斗。我希望我的Textviews显示整数值并每秒刷新一次。Android更新/刷新TextView

我的Integer对象

public Integer Money[] = new Integer[1]; 

public void MoneyMaker(int count,int c){ 
     Money[c] = count; 
    } 

public void MakeMoney(){ 
     int count = 0; 
     MoneyMaker(0, count); 
    } 

在MainActivity我达到他们的

MainHolder Main = new MainHolder(); 

我的TextView这样的:在mainActivity onCreate方法

<TextView 
     android:text="Money: " 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/MoneyText" 
     android:layout_marginLeft="67dp" 
     android:layout_marginStart="67dp" 
     android:layout_alignTop="@+id/btn_Money" 
     android:layout_toRightOf="@+id/btn_Money" 
     android:layout_toEndOf="@+id/btn_Money" 
     android:layout_marginTop="38dp" /> 

    <TextView 
     android:text="Box: " 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/BoxesText" 
     android:layout_marginLeft="67dp" 
     android:layout_marginStart="67dp" 
     android:layout_alignTop="@+id/btn_Boxes" 
     android:layout_toRightOf="@+id/btn_Boxes" 
     android:layout_toEndOf="@+id/btn_Boxes" 
     android:layout_marginTop="38dp" /> 

了 “ĢameLoop”

Thread t = new Thread() { 

     @Override 
     public void run() { 
      try { 
       while (!isInterrupted()) { 
        Thread.sleep(1000); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Refresh(); 
          SaveFile(); 
         } 
        }); 
       } 
      } catch (InterruptedException e) { 
      } 
     } 
    }; 

    t.start(); 

,并得到刷新方法

public void Refresh(){ 
    TextView MoneyTXT = (TextView) findViewById(R.id.MoneyText); 
    MoneyTXT.setText("Money: " +Main.Money[0]); 
    TextView BoxesTXT = (TextView) findViewById(R.id.BoxesText); 
    BoxesTXT.setText("Boxes: " +Main.Boxes[0]); 
} 

的OnCreate类

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_navigation); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    LoadFile(); 

    Thread t = new Thread() { 

     @Override 
     public void run() { 
      try { 
       while (!isInterrupted()) { 
        Thread.sleep(1000); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Refresh(); 
          SaveFile(); 
         } 
        }); 
       } 
      } catch (InterruptedException e) { 
      } 
     } 
    }; 

    t.start(); 
} 

我没有表现出任何代码错误,但启动应用程序时,它会自动关闭的。 在logcat中,遇到错误:

11-07 19:10:10.007 29809-29809/com.crelix.crelix E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: com.crelix.crelix, PID: 29809 
                   java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
                    at com.crelix.crelix.NavigationActivity.Refresh(NavigationActivity.java:147) 
                    at com.crelix.crelix.NavigationActivity$1$1.run(NavigationActivity.java:66) 
                    at android.os.Handler.handleCallback(Handler.java:810) 
                    at android.os.Handler.dispatchMessage(Handler.java:99) 
                    at android.os.Looper.loop(Looper.java:189) 
                    at android.app.ActivityThread.main(ActivityThread.java:5529) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at java.lang.reflect.Method.invoke(Method.java:372) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 
+0

的可能的复制[什么是空指针异常,以及如何解决?(http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how -do-i-fix-it) –

+0

在哪里初始化Main.Money [0]和Main.Boxes [0]? – compte14031879

+0

请发布全班。 –

回答

0

的错误显示,即使TextView的初始化后仍无效, 这个意思。

膨胀布局的问题。

  1. 在您的方法名为Refresh()后可能会忘记或膨胀。
  2. 虚增布局不包含TextView的。(由于相同的布局像横向和纵向或多个尺寸布局的另一个版本)

检查一次,让我知道如果这个问题仍然存在。

编码快乐

+0

我将我的Refresh方法行添加到我的片段“onCreateView”方法中。现在它显示,但我现在的问题是令人耳目一新的片段。因为我的刷新方法不会在片段中工作。 – MsCrelix