如何从其他 Activity 类访问 Activity 的视图

jay*_*los 5 android

TextView我的问题是,当我更改Main 类中a 的文本时,它返回 nullPointerException。

这是我的代码:

主文件

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

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

    </LinearLayout>

  </RelativeLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud)

主班

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

}
Run Code Online (Sandbox Code Playgroud)

然后将更新状态 TextView 的类是这样的:

通讯录类

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....
Run Code Online (Sandbox Code Playgroud)

请帮助我。我在网上找不到任何解决方案。我需要更新状态......

这是我的清单:

...
 <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>
...
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助。

Arn*_*rty 4

status当您尝试从联系人活动上下文中查找具有id 的视图时,您会看到主活动上下文中存在该视图。这就是它回归的原因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);
    }
}
Run Code Online (Sandbox Code Playgroud)

联系方式 活动

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

}
Run Code Online (Sandbox Code Playgroud)