2017-02-01 5 views
0

Я хочу изменить контекст текстового поля при выборе флажка.Сбой приложения для Android при внедрении кнопки прослушивания

Текст и кнопка находятся внутри фрагмента.

TextView:

<TextView 
      android:text="TextView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/textView_test" /> 

Кнопка:

<CheckBox android:id="@+id/checkBox_Alz" 
      android:text="Alzheimer's" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:onClick="onCheckBoxClicked" /> 

активность:

public void showConditionFragment() { 
    android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.frame_content, new ConditionFragment()); 
    fragmentTransaction.commit(); 
} 

public static class ConditionFragment extends Fragment { 
    private final String LOG = this.getClass().getSimpleName(); 
    public ConditionFragment() { 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.condition_choice, container, false); 
     return view; 
    } 
    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

} 

СЛУШАТЕЛЬ:

public void onCheckBoxClicked(View view) { 
    TextView viewTest = (TextView)findViewById(R.id.textView_test); 
    viewTest.setText("test"); 
} 

Как только я выбрал окно, я получаю сообщение об ошибке, заявив, что приложение не работает. Если метод слушателя остается без кода внутри, то поле выбирается без каких-либо ошибок.

EDIT:

Error Log:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.phorloop.graymatters, PID: 14416 
        java.lang.IllegalStateException: Could not execute method for android:onClick 
         at android.view.View$DeclaredOnClickListener.onClick(View.java:4725) 
         at android.view.View.performClick(View.java:5637) 
         at android.widget.CompoundButton.performClick(CompoundButton.java:122) 
         at android.view.View$PerformClick.run(View.java:22429) 
         at android.os.Handler.handleCallback(Handler.java:751) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6119) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
        Caused by: java.lang.reflect.InvocationTargetException 
         at java.lang.reflect.Method.invoke(Native Method) 
         at android.view.View$DeclaredOnClickListener.onClick(View.java:4720) 
         at android.view.View.performClick(View.java:5637)  
         at android.widget.CompoundButton.performClick(CompoundButton.java:122)  
         at android.view.View$PerformClick.run(View.java:22429)  
         at android.os.Handler.handleCallback(Handler.java:751)  
         at android.os.Handler.dispatchMessage(Handler.java:95)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6119)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
        Caused by: java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to com.rey.material.widget.TextView 
         at com.phorloop.graymatters.view.activity.WelcomeActivity.onCheckBoxClicked(WelcomeActivity.java:180) 
         at java.lang.reflect.Method.invoke(Native Method)  
         at android.view.View$DeclaredOnClickListener.onClick(View.java:4720)  
         at android.view.View.performClick(View.java:5637)  
         at android.widget.CompoundButton.performClick(CompoundButton.java:122)  
         at android.view.View$PerformClick.run(View.java:22429)  
         at android.os.Handler.handleCallback(Handler.java:751)  
         at android.os.Handler.dispatchMessage(Handler.java:95)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6119)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
+0

Пожалуйста, пост журнал ошибок. Является ли флажок в фрагменте или макете действий? –

+0

Это то, о чем вам следует беспокоиться - «java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView нельзя отнести к com.rey.material.widget.TextView». Если вы не ожидаете специального класса TextView здесь, проверьте свой импорт и соответствующим образом настройте. – Amit

ответ

0

Похоже, вы импортируете неправильный класс TextView активности (com.rey.material.widget.TextView).

Попробуйте импортировать android.support.v7.widget.AppCompatTextView с помощью

public void onCheckBoxClicked(View view) { 
    AppCompatTextView viewTest = (AppCompatTextView)findViewById(R.id.textView_test); 
    viewTest.setText("test"); 
} 
Смежные вопросы