2014-10-18 3 views
0

Будет разностное между этими двумя кодами:Объявление о виджетах. В или вне onCreateView?

EditText mTitleField; 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_crime, parent, false); 
     mTitleField = (EditText)v.findViewById(R.id.crime_title); 
} 

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_crime, parent, false); 
     EditText mTitleField = (EditText)v.findViewById(R.id.crime_title); 
} 

Первый имеет EditText переменной, объявленной вне onCreateView, второй из них имеет свою декларацию внутри onCreateView. Неважно, где я объявляю это?

ответ

0

Да, это имеет значение. Для первого сценария вы также можете использовать mTitleField с другими методами (хотя вам придется устанавливать его отдельно для других методов). Для второго сценария у вас есть бот, объявленный и созданный экземпляр mTitleField внутри onCreateView(), поэтому он доступен только внутри этого метода.

Это базовая концепция глобальных и локальных переменных в Java.

0

Вне курса это имеет значение, я предполагаю, что для первого случая mTitleField объявлен глобально в уровне класса. В этом случае вы можете получить доступ к mTitleField как EditText любым другим способом в этом конкретном классе.

Пример: Предположим, что по нажатию любой кнопки вам нужно ввести текст в этом EditText, то вы можете просто сделать, как этот

String someString = mTitleField.getText().toString(); 

Во втором случае mTitleField объявляется локально. В этом случае за пределами onCreateView(...) вы не можете получить доступ к mTitleField. Объем mTitleField находится в onCreateView(...).

Пример: Предположим, что по нажатию любой кнопки вам нужен текст ввести в этом EditText то вы должны объявить, что EditText снова внутри onClick методы как этого

EditText mTitleField = (EditText)v.findViewById(R.id.crime_title); 
String someString = mTitleField.getText().toString(); 
0

Разница заключается в том, что в Первом способе он объявлен во всем мире поэтому преимущество этого заключается в том, что вы можете использовать глобальную переменную где угодно во всей деятельности. В то время как для второго метода она используется как локальная переменная, которую вы можете использовать для определенного места в активности.

Локальная переменная определяется в пределах объема блока.

Глобальная переменная - это переменная, к которой можно получить доступ в нескольких областях.

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