0

有一个扩展自定义 MainActivity 的 DashBoardActivity,但在尝试从 DashBoardActivity 访问某些视图时出现 NullPointerException。知道为什么会发生这种情况或这里没有看到什么吗?谢谢

主要活动:

@Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dashboard_layout);

        linearlayout = (LinearLayout)findViewById(R.id.footer_container_id);
        actionlayout = (LinearLayout)findViewById(R.id.actionbar_container_id);

        mainboard = (ImageView)findViewById(R.id.image_dashboard_id);
        dashboard = (ImageView)findViewById(R.id.image_comparison_id);
        graph = (ImageView)findViewById(R.id.image_graph_id);
        contact = (ImageView)findViewById(R.id.image_contact_id);

        actionbar = getSupportActionBar();
        actionbarView = getLayoutInflater().inflate(R.layout.actionbar, null);
        actionbar.setCustomView(actionbarView, new ActionBar.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

        }

public void setSelectedDashBoard(){  
   mainboard.setSelected(true);
}   

仪表板活动:

public class DashBoardActivity extends MainActivity implements OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        int orientation = getResources().getConfiguration().orientation;

        sessionmanager = new SessionManager(this);
        prefs = getSharedPreferences(PREFS_NAME,0);
        String cached_username = prefs.getString(USERNAME, "");

        mainboard.setSelected(true);  // NullPointerException here.

仪表板_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:orientation="horizontal"
        android:id="@+id/footer_container_id" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"> 

    <include layout="@layout/footer"></include>   
    </LinearLayout>

 <FrameLayout
        android:id="@+id/dashboard_fragment_container_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/footer_container_id"
        android:layout_alignParentTop="true">
    </FrameLayout>

</RelativeLayout>

footer.xml 的一部分:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_footer_id" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:layout_alignParentBottom="true"
    android:background="#292929" android:orientation="horizontal">

    <LinearLayout android:id="@+id/ytd_container_id"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_weight="1" android:orientation="vertical">

        <ImageView android:id="@+id/image_dashboard_id"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_gravity="center" android:src="@drawable/footer_icons_ytd" />

        <TextView android:id="@+id/ytd_text_id" android:layout_width="match_parent"
            android:layout_height="wrap_content" android:layout_gravity="center"
            android:layout_marginBottom="5dp" android:layout_marginLeft="5dp"
            android:clickable="false" android:paddingLeft="10dp" android:text="Year to Date"
            android:textColor="#FFFFFF" android:textSize="10sp">

        </TextView>
        "
    </LinearLayout>

更新 如果我使用方法 setSelectedDashBoard() 代替,我刚刚从 MainActivity 类添加,我没有得到 NullPointerException。不明白。。

4

3 回答 3

1
  dashboard = (ImageView)findViewById(R.id.image_comparison_id);

仪表板为空的唯一原因是R.id.image_comparison_id不属于R.layout.dashboard_layout

于 2013-02-27T12:08:22.450 回答
0

它是字符 " ,除非是拼写错误。

   </TextView>
    **"**
 </LinearLayout>
于 2013-02-27T12:21:12.037 回答
0

它看起来像是子类成员变量遮蔽的典型错误。您应该检查是否在 DashBoardActivity 中重新声明了变量仪表板。子类只是用未初始化的本地变量替换继承的变量。

于 2013-02-27T14:46:21.110 回答