2016-11-07 16 views
0

私は問題で戦っています。 Textviewsに整数値を表示し、毎秒更新させたいAndroid Update/Refresh TextView

私の整数MainActivityで

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

オブジェクト私は

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

を得た私は、コード内のエラーを表示しませんが、アプリを起動したときに、それが自動的にで停止します。エラーが示すように

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

可能な複製をコーディングハッピー[NullPointerExceptionがある、と私はそれをどのように修正すればよいか?](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のは、さえ初期化した後、それは意味 をnullのまま:logcatで は、エラーが発生しました。

レイアウトを拡張する際の問題。

  1. Refresh()というメソッドの後に忘れてしまったり膨らんだりしている可能性があります。
  2. 膨張したレイアウトというのTextViewを含んでいない。(原因風景やポートレートまたは複数のサイズのレイアウトのように同じレイアウトの別のバージョンに)

チェック一度、問題がまだそこにあるなら、私に知らせてください。

+0

フラグメントの "onCreateView"メソッドにRefreshメソッドの行を追加しました。今、それは表示されますが、私の問題は今、断片をリフレッシュしています。私のリフレッシュ方法は断片化していないので。 – MsCrelix