2016-04-13 1 views
-3

Вот мой код, который работает отлично:Android Studio сбоя приложения, когда переменный перемещаются в базовый класс, а не окончательная внутри функции

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
final TextView numberTxtV = (TextView)findViewById(R.id.numberTextV); 
assert numberTxtV!=null; 
numberTxtV.addTextChangedListener(new TextWatcher() { 
@Override 
public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

} 

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 

} 

@Override 
public void afterTextChanged(Editable s) { 

} 
}); 
final TextView percentTextV=(TextView)findViewById(R.id.percentTextV); 
final TextView resultTextV=(TextView)findViewById(R.id.resultTextV); 
Button calcBtn = (Button)findViewById(R.id.button); 
assert calcBtn != null; 
calcBtn.setOnClickListener(new View.OnClickListener(){public void onClick(View v){ 
if(!numberTxtV.getText().toString().equals("") && !percentTextV.getText().toString().equals("")){ 
float result = Float.parseFloat(numberTxtV.getText().toString())*Float.parseFloat(percentTextV.getText().toString())/100; 
assert resultTextV != null; 
resultTextV.setText(Float.toString(result));} 
}}); 

Когда я хватаю resultTextV и поставить вне функции как частный вар из класс, с которым работает приложение, почему это и как обойти его?

+0

Как ваш крах приложения? Вы получаете ошибку или исключение? Обмен этой дополнительной информацией будет полезен, чтобы помочь вам лучше! –

ответ

1

Если вы положили final TextView resultTextV = (TextView)findViewById(R.id.resultTextV); из-за того, что ваше приложение выходит из строя, потому что представление, где искать визуальные элементы, не загружается.

Вы должны использовать findViewById(...) только после того, как будет определена планировка мероприятия, а затем.

setContentView(R.layout.activity_main); 

Обычно это делается в onCreate(Bundle savedInstanceState) на в onResume().

Попробуйте так:

public class MainActivity extends AppCompatActivity { 

    TextView resultTextV; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     resultTextV = (TextView)findViewById(R.id.resultTextV); 
     // ... 
    }  
} 
+0

Прямо на деньги, спасибо миллион. –

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