2014-08-29 107 views
0

我的代码如下:为什么我在ImageView上得到NullPointerException?

activity_for_me.xml

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <ListView 
     android:id="@+id/recco_list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </ListView> 

    <ImageView 
     android:id="@+id/checkin" 
     android:layout_width="wrap_content" 
     android:layout_height="80dp" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="20dp" 
     android:onClick="ClickCheckIn" 
     android:src="@drawable/checkin" /> 

</RelativeLayout> 

recco_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@layout/nine_patch" > 

    <ImageView 
     android:id="@+id/outlet_icon" 
     android:layout_marginLeft="15dp" 
     android:layout_height="55dp" 
     android:layout_width="55dp" 
     android:layout_marginTop="10dp"/> 


    <TextView 
     android:id="@+id/distance" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginLeft="15dp" 
     android:hint="Distance" 
     /> 
    <TextView 
     android:id="@+id/outlet_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/outlet_icon" 
     android:layout_toLeftOf="@id/distance" 
     android:layout_marginLeft = "15dip" 
     android:hint="outlet" 
     /> 

    <TextView 
     android:id="@+id/reward" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/outlet_name" 
     android:layout_toRightOf="@id/outlet_icon" 
     android:layout_toLeftOf="@id/distance" 
     android:layout_marginLeft = "15dip" 
     android:layout_marginTop="5dp" 
     android:textColor="@color/abc_search_url_text_holo" 
     android:hint="Reward" 
     /> 

    <View 
     android:id="@+id/rule" 
     android:layout_below="@id/reward" 
     android:layout_toRightOf="@id/outlet_icon" 
     android:layout_toLeftOf="@id/distance" 
     android:layout_width="fill_parent" 
     android:layout_marginLeft = "15dip" 
     android:layout_height="1dp" 
     android:background="#c0c0c0"/> 

     <ImageView 
     android:id="@+id/favourite_icon" 
     android:layout_below="@id/rule" 
     android:layout_marginLeft="15dp" 
     android:layout_marginTop="10dp" 
     android:layout_height="15dp" 
     android:layout_width="15dp" 
     android:src="@drawable/heart_empty"/> 

    <ImageView 
     android:id="@+id/loc_icon" 
     android:layout_width="25dp" 
     android:layout_height="25dp" 
     android:layout_below="@id/rule" 
     android:layout_marginLeft = "15dip" 
     android:layout_marginTop="5dp" 
     android:layout_toRightOf="@id/outlet_icon" 
     android:src="@drawable/map_pointer"/> 

    <TextView 
     android:id="@+id/locality" 
     android:layout_toRightOf="@id/loc_icon" 
     android:layout_toLeftOf="@id/distance" 
     android:layout_below="@id/rule" 
     android:layout_marginRight="15dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft = "5dip" 
     android:layout_marginTop="5dp" 
     android:hint="Locality" 
     /> 


</RelativeLayout> 

Activity.java

public class ForMeActivity extends Fragment { 


    @SuppressLint("ClickableViewAccessibility") 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     RelativeLayout rootView = (RelativeLayout) inflater.inflate(
       R.layout.activity_for_me, container, false); 

     ImageView favourite_heart = (ImageView) rootView 
       .findViewById(R.id.favourite_icon); 

    favourite_heart.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
//   Toast.makeText(YourActivityName.this, 
//     "The favorite list would appear on clicking this icon", 
//     Toast.LENGTH_LONG).show(); 
      System.out.println("Favourite Icon clicked"); 
     } 
    }); 

     list = (ListView) rootView.findViewById(R.id.recco_list); 
     ImageView check_in_img = (ImageView) rootView 
       .findViewById(R.id.checkin); 
     ImageView outlet_logo = (ImageView) rootView 
       .findViewById(R.id.outlet_icon); 
     final String data = getArguments().getString("data"); 
     ForMeFile = new File(getActivity().getExternalFilesDir(filepath), 
       filename); 

     final String cookie = getArguments().getString("cookie"); 
     System.out.print(cookie); 

     check_in_img.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent in = new Intent(getActivity(), CheckInView.class); 
       startActivity(in); 
       System.out.println("Checkin Icon clicked"); 
      } 
     }); 
} 

我想改变形象的favourit e_iconImageView当我点击它。但只要我点击图标,我会得到NullPointerException。什么原因点击check_in_img正在工作,但点击收藏夹是不工作,即使当前布局是包含的内容收藏夹? SO的其他来源说要检查相同。

+0

你没有在onCreateView中创建视图methed在android中有你知道的片段 – 2014-08-29 10:14:57

+1

如果发生崩溃,logcat中会有一个堆栈跟踪。将其包含在您的问题中,以及导致它的代码。 – laalto 2014-08-29 10:15:29

+0

我认为这是行不通的,因为在'activity_for_me.xml'中缺少'R.id.favourite_icon' – Martynas 2014-08-29 10:20:26

回答

1

favourite_iconrecco_list.xml的一部分,你正在努力寻找它在activity_for_me.xml。该视图不存在,因此,例外。

R.id.favourite_icon是不是有在activity_for_me.xml

如果你想访问列表视图中的项目,我建议你阅读关于ListView和getView()。

相关问题