2015-05-04 4 views
0

Im пытается установить ресурс изображения ImageView внутри фрагмента. Но когда функция setImageResource (R.id.figure3) запускается внутри метода метода figurina, происходит сбой NullPointerException Кто-нибудь знает, где может быть проблема?Исключительное исключение указателя при изменении ресурса ImageView внутри фрагмента

public class WeatherStationFragment extends Fragment { 

private EditText locationField; 
private TextView zobrazovac; 
private static ImageView cityConfirm; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ 
    View v = inflater.inflate(R.layout.weather_station_fragment, parent, false); 
    zobrazovac = (TextView)v.findViewById(R.id.zobrazovac); 
    locationField = (EditText)v.findViewById(R.id.locationInput); 

      // vstup pre lokaciu 
    locationField.setGravity(CENTER); 
    locationField.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       WeatherInfoRetrieval weatherInfoRetrieval = new WeatherInfoRetrieval(); 
       zobrazovac.setText(weatherInfoRetrieval.getJsonData(locationField.getText().toString())); 
       if(zobrazovac.getText().toString().equals("nefacha")){ 
        return false; 
       } 
       figurina(v); 
       return true; 
      } 
      return false; 
     } 
    }); 

    return v; 

}

public void figurina(View v){ 
    int temperature = 0; 
    ImageView figura = (ImageView)v.findViewById(R.id.figure); 
    temperature = Integer.parseInt(zobrazovac.getText().toString()); 
    zobrazovac.setText(temperature + "C"); 
    if(temperature < 0){ 
     figura.setImageResource(R.mipmap.figure6); 
    } 
    if(temperature < 10 && temperature >= 0){ 
     figura.setImageResource(R.mipmap.figure5); 
    } 
    if(temperature < 16 && temperature >= 10){ 
     figura.setImageResource(R.mipmap.figure4); 
    } 
    if(temperature < 23 && temperature >= 16){ 
     figura.setImageResource(R.mipmap.figure3); 
    } 
    if(temperature < 29 && temperature >= 23){ 
     figura.setImageResource(R.mipmap.figure2); 
    } 
    if(temperature < 35 && temperature >= 29){ 
     figura.setImageResource(R.mipmap.figure1); 
    } 
    if(temperature >= 35){ 
     figura.setImageResource(R.mipmap.figure0); 
    } 
} 
+1

Является 'figura' нуль из' v.findViewById (R.id.figure) '? Похоже, что 'v' в' figurina' является экземпляром 'EditText'. ;) – alenz316

ответ

1

Вы звоните findViewById() на неправильном представлении. Смотрите ниже: (обратите внимание на finalView v и изменил setOnKeyListener к View editText)

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ 
    final View v = inflater.inflate(R.layout.weather_station_fragment, parent, false); 
    zobrazovac = (TextView)v.findViewById(R.id.zobrazovac); 
    locationField = (EditText)v.findViewById(R.id.locationInput); 

      // vstup pre lokaciu 
    locationField.setGravity(CENTER); 
    locationField.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View editText, int keyCode, KeyEvent event) { 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       WeatherInfoRetrieval weatherInfoRetrieval = new WeatherInfoRetrieval(); 
       zobrazovac.setText(weatherInfoRetrieval.getJsonData(locationField.getText().toString())); 
       if(zobrazovac.getText().toString().equals("nefacha")){ 
        return false; 
       } 
       figurina(v); 
       return true; 
      } 
      return false; 
     } 
    }); 

    return v; 
} 
+0

Большое спасибо! Сейчас он работает – Tomus

Смежные вопросы