2015-08-23 10 views
-2

Я не могу определить массив в студии android mainActivityFragment.java; он говорит, что это недостижимое утверждение.Почему я не могу определить массив?

Мой код:

package com.example.android.sunshine; 

import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public class MainActivityFragment extends Fragment { 

    public MainActivityFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_main, container, false); 



     String[] forecastArray = { 
       "Today - Sunny - 88/63", 
       "Tomorrow - Foggy - 70/40", 
       "Tuesday - Cloudy - 72/63", 
       "Wednesday - Asteroids - 75/65", 
       "Thursday - Heavy Rain - 65/56", 
       "Friday - Help Trapped in weather Station - 60/51", 
       "Saturday - Sunny - 80/68"}; 
    } 
    List<String> weekForecast = new ArrayList<String>(
      Arrays.asList(forecastArray) 
    ); 
} 
+0

'foreCastArray' не определяется вне рамки функции 'onCreateView' – amdixon

+0

, то как создать массив там? –

+0

Вам нужно '}' на линии после 'return' –

ответ

0

Ошибка здесь

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_main, container, false); 
    String[] forecastArray = { 
      "Today - Sunny - 88/63", 
      "Tomorrow - Foggy - 70/40", 
      "Tuesday - Cloudy - 72/63", 
      "Wednesday - Asteroids - 75/65", 
      "Thursday - Heavy Rain - 65/56", 
      "Friday - Help Trapped in weather Station - 60/51", 
      "Saturday - Sunny - 80/68"}; 
} 

вы должны поставить array определение до return заявления

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    String[] forecastArray = { "Today - Sunny - 88/63", 
      "Tomorrow - Foggy - 70/40", "Tuesday - Cloudy - 72/63", 
      "Wednesday - Asteroids - 75/65", 
      "Thursday - Heavy Rain - 65/56", 
      "Friday - Help Trapped in weather Station - 60/51", 
      "Saturday - Sunny - 80/68" }; 
    return inflater.inflate(R.layout.fragment_main, container, false); 
} 

надежду, что помогло

+2

Этот код не будет компилировать,' List' все еще должен иметь доступ к 'прогнозArray'. – durron597

1

String[] forecastArray определяется как локальная переменная в методе onCreateView. Просто переместите определение вне этого метода. Затем вы можете его инициализировать.

Вот как вы можете это сделать:

public class MainActivityFragment extends Fragment { 

    String[] forecastArray; 
    List<String> weekForecast; 

    public MainActivityFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     //move initialization here 
     //nothing can be executed after return statement 
     forecastArray = { 
       "Today - Sunny - 88/63", 
       "Tomorrow - Foggy - 70/40", 
       "Tuesday - Cloudy - 72/63", 
       "Wednesday - Asteroids - 75/65", 
       "Thursday - Heavy Rain - 65/56", 
       "Friday - Help Trapped in weather Station - 60/51", 
       "Saturday - Sunny - 80/68"}; 
     weekForecast = new ArrayList<String>(Arrays.asList(forecastArray)); 
     return inflater.inflate(R.layout.fragment_main, container, false); 
    } 
} 
+0

получил его спасибо Luiggi Mendoza –

0

Ваш forecastArray объявлен:

  • Внутри onCreateView
  • После return заявления. не

Ничто будет выполняться после return заявления (если это не в finally блоке, но не беспокойтесь об этом прямо сейчас).

Похоже, вы пытаетесь создать список как поле экземпляра для своего класса; чтобы сделать это, вам нужно переместить фигурную скобку, чтобы перед forecastArray декларации, как это:

package com.example.android.sunshine; 

import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public class MainActivityFragment extends Fragment { 

    public MainActivityFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_main, container, false); 
    } // new location for the } 


     String[] forecastArray = { 
       "Today - Sunny - 88/63", 
       "Tomorrow - Foggy - 70/40", 
       "Tuesday - Cloudy - 72/63", 
       "Wednesday - Asteroids - 75/65", 
       "Thursday - Heavy Rain - 65/56", 
       "Friday - Help Trapped in weather Station - 60/51", 
       "Saturday - Sunny - 80/68"}; 
    // } was here, not anymore 
    List<String> weekForecast = new ArrayList<String>(
      Arrays.asList(forecastArray) 
    ); 
} 
0

Попробуйте это, просто инициализировать массив с первым вне конструктора

import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public class MainActivityFragment extends Fragment { 

    public string[] forecastArray; 

    public MainActivityFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_main, container, false); 



     String[] forecastArray = { 
       "Today - Sunny - 88/63", 
       "Tomorrow - Foggy - 70/40", 
       "Tuesday - Cloudy - 72/63", 
       "Wednesday - Asteroids - 75/65", 
       "Thursday - Heavy Rain - 65/56", 
       "Friday - Help Trapped in weather Station - 60/51", 
       "Saturday - Sunny - 80/68"}; 
    } 
    List<String> weekForecast = new ArrayList<String>(
      Arrays.asList(forecastArray) 
    ); 
} 
Смежные вопросы