2011-10-18 6 views
3

私の問題は、Main.classのTextViewのテキストを変更すると、nullPointerExceptionを返します。他のアクティビティクラスからアクティビティのビューにアクセスするには

ここに私のコードです:

main.xml

<TabHost ...> 
    <RelativeLayout ...> 
    <LinearLayout ...> 
     <TabWidget .../> 
     <FrameLayout ...> 
     <ListView ../> 
     </FrameLayout> 
    </LinearLayout> 

    <LinearLayout ...> 
     <TextView android:id="@+id/status" ... /> 

    </LinearLayout> 

    </RelativeLayout> 
</TabHost> 

がMain.class

.... 
TabHost tabHost; 
TabHost.TabSpec spec; 
Intent intent; 

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

    //display implementation of TabHost 
    .... 
    //Contacts tab 
    intent = new Intent().setClass(this, Contacts.class); 
    spec = tabHost.newTabSpec("contacts").setIndicator("Contacts", res.getDrawable(R.drawable.ic_tab_contacts)).setContent(intent); 
    tabHost.addTab(spec); 

} 

その後ステータスのTextViewを更新するクラスは、このです:

Contacts.class

public class Contacts extends ListActivity{ 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 

     //gather info to display in ListView 
     .... 

     updateStatus("New Status"); 
    } 

    private void updateStatus(String status){ 
     TextView labelView = (TextView) findViewById(R.id.status); 
     labelView.setText(status); 
    } 

} 


labelView.setText(status); Error occurs here.... 

Pls help me。私はネット上の任意の解決策を見つけることができません。私は、ステータスを更新する必要が ....

HERESに私のマニフェスト:事前に

... 
<application ...> 
    <activity android:name=".Main" ... > 
    <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Contacts" android:label="@string/app_name"></activity> 
    <activity android:name=".OtherClass" android:label="@string/app_name"></activity> 
    <activity android:name=".OtherClass2" android:label="@string/app_name"></activity> 
</application> 
... 

、任意の助けに感謝します。

答えて

3

あなたはコンタクトの活動状況からそれを見つけようとしている一方で、ID statusとビューは、メインの活動コンテキストに存在する参照してください。それはなぜ返されているのですかnull

主な活動

public class Main extends Activity { 

    public static String sStatus = ""; 

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

      //display implementation of TabHost 
      .... 

    } 

    @Override 
    protected void onResume() { 
     TextView labelView = (TextView) findViewById(R.id.status); 
     labelView.setText(status); 
    } 
} 

コンタクトアクティビティ

public class Contacts extends ListActivity{ 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 

     //gather info to display in ListView 
     .... 

     updateStatus("New Status"); 
    } 

    private void updateStatus(String status){ 
     Main.sStatus = status; 
    } 

} 
+0

Sir Aki、plsはメインクラスのsStatusの実装を提供しています...私もこの解決策を試したので...しかし、私にエラーを与えます。 – jayellos

+0

私に電話しないでください。実装ではどういう意味ですか?あなたはどんなエラーを出していますか? –

+0

私はpublic TextView sStatusを宣言しました。しかし、CantはMain.sStatusを見つけます。 – jayellos

0

ビューはメインにのみ関連付けられています。 連絡先のcontentViewをリセットする必要があります。 変更されたコード

public class Contacts extends ListActivity{ 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //gather info to display in ListView 
     .... 

     updateStatus("New Status"); 
    } 

    private void updateStatus(String status){ 
     TextView labelView = (TextView) findViewById(R.id.status); 
     labelView.setText(status); 
    } 

} 
+0

男:

これを試してみてください、それはあなたの問題を解決する必要があります!私はこれを前に試してみましたが、もう一度試しました。 Contacts.classはTabHostのTABのビューであるため、エラーです。 – jayellos

関連する問題