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

DashBoardActivity:

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.

Dashboard_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>

代わりに、MainActivityクラスから追加したメソッドsetSelectedDashBoard()を使用すると、NullPointerExceptionが発生しなくなりますわからない。

4

3 に答える 3

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

ダッシュボードがnullになる唯一の理由は、に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 に答える