2014-11-17 2 views
0

최근 런타임 오류를 해결하기 위해 질문을 올렸습니다. 그러나 나는 여전히 더 많은 것을 가지고 있으며, 버튼에 대한 내 setOnClickListener를 가리키는 nullpointer 오류가 나타나는 이유를 알지 못합니다. Stack Overflow에 익숙하지 않아 코드 및 오류의 서식을 지정하는 데 여전히 문제가 있습니다.안드로이드 코드의 setOnclickListener에서 Nullpointer 예외가 발생했습니다.

import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class OppositeFragment extends Fragment { 

    private static TextView sOppositeView; 
    private Button mSubmit; 
    private int mRedValue, mGreenValue, mBlueValue; 
    private EditText mRedSelect, mGreenSelect, mBlueSelect; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View view = inflater.inflate(R.layout.text_fragment, container, false); 
     sOppositeView = (TextView) view.findViewById(R.id.textView1); 
     mRedSelect = (EditText)view.findViewById(R.id.redValue); 
     mGreenSelect = (EditText)view.findViewById(R.id.greenValue); 
     mBlueSelect = (EditText)view.findViewById(R.id.blueValue); 
     mSubmit = (Button) view.findViewById(R.id.submitButton); 
     mSubmit.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       try { 
        mRedValue = Integer.parseInt(mRedSelect.getText().toString()); 
        mGreenValue = Integer.parseInt(mGreenSelect.getText().toString()); 
        mBlueValue = Integer.parseInt(mBlueSelect.getText().toString()); 
        sOppositeView.setTextColor(Color.rgb(mRedValue, mGreenValue, mBlueValue)); 

       } catch (NumberFormatException nfe) { // do nothing 
       } 

      } 
     }); 
     return view; 
    } 

    public void changeTextProperties(int fontsize, String text) 
    { 
     sOppositeView.setTextSize(100-fontsize); 
     sOppositeView.setText(text); 
    } 
} 

라인 (34)가 mSubmit.setOnclickListner 라인입니다 : 여기

는 자바 파일입니다. 여기

이 조각에 대한 XML입니다 :

11-16 22:34:02.239: E/AndroidRuntime(1188): FATAL EXCEPTION: main 
11-16 22:34:02.239: E/AndroidRuntime(1188): Process: meng.jerry.fragmentexample, PID: 1188 
11-16 22:34:02.239: E/AndroidRuntime(1188): java.lang.RuntimeException: Unable to start activity ComponentInfo{meng.jerry.fragmentexample/meng.jerry.fragmentexample.FragmentExampleActivity}: android.view.InflateException: Binary XML file line #28: Error inflating class fragment 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.os.Handler.dispatchMessage(Handler.java:102) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.os.Looper.loop(Looper.java:136) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at java.lang.reflect.Method.invoke(Method.java:515) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at dalvik.system.NativeStart.main(Native Method) 
11-16 22:34:02.239: E/AndroidRuntime(1188): Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class fragment 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.Activity.setContentView(Activity.java:1929) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at meng.jerry.fragmentexample.FragmentExampleActivity.onCreate(FragmentExampleActivity.java:19) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.Activity.performCreate(Activity.java:5231) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  ... 11 more 
11-16 22:34:02.239: E/AndroidRuntime(1188): Caused by: java.lang.NullPointerException 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at meng.jerry.fragmentexample.OppositeFragment.onCreateView(OppositeFragment.java:35) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1099) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1201) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:292) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
11-16 22:34:02.239: E/AndroidRuntime(1188):  ... 21 more 

이러한 오류는 시간 동안 나를 귀찮게되었습니다

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 


    <EditText 
     android:id="@+id/blueValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_below="@+id/greenValue" 
     android:hint="@string/blue_hint" 
     android:ems="10" 
     android:inputType="number" /> 

    <EditText 
     android:id="@+id/greenValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_below="@+id/redValue" 
     android:ems="10" 
     android:hint="@string/green_hint" 
     android:inputType="number" /> 

    <TextView 
     android:id="@+id/oppositeTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:text="@string/text_label_two" /> 

    <EditText 
     android:id="@+id/redValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/greenValue" 
     android:layout_below="@+id/oppositeTextView" 
     android:ems="10" 
     android:hint="@string/red_hint" 
     android:inputType="number" /> 

    <Button 
     android:id="@+id/submitButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/blueValue" 
     android:layout_centerHorizontal="true" 
     android:text="@string/color_change_label" /> 

</RelativeLayout> 

마지막으로, 여기에 로그 캣입니다. 또한 잘못된 서식에 대해 사과드립니다. 그것에 대해

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.Menu; 


public class FragmentExampleActivity extends FragmentActivity implements ToolbarFragment.ToolbarListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fragment_example); 

    } 

    @Override 
    public void onButtonClick(int fontsize, String text) 
    { 
     //instantiates the new fragments as well as start editing the text 
     TextFragment textFragment = (TextFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.text_fragment); 
     textFragment.changeTextProperties(fontsize, text); 

     OppositeFragment oppositeFragment=(OppositeFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.opposite_fragment); 
     oppositeFragment.changeTextProperties(fontsize, text);  
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.fragment_example, menu); 
     return true; 
    } 


} 

하고 XML :

또한

는, 여기에 기본 활동에 대한 코드는 다음

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".FragmentExampleActivity" > 

    <!-- Fragment that contains the toolbar --> 
    <fragment 
     android:id="@+id/toolbar_fragment" 
     android:name="meng.jerry.fragmentexample.ToolbarFragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     tools:layout="@layout/toolbar_fragment"/> 
    <!-- Fragment that displays the text --> 
    <fragment 
     android:id="@+id/text_fragment" 
     android:name="meng.jerry.fragmentexample.TextFragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_below="@+id/toolbar_fragment" 
     android:layout_marginTop="40dp" 
     tools:layout="@layout/text_fragment" /> 
    <!-- Fragment that displays the text in reverse --> 
    <fragment 
     android:id="@+id/opposite_fragment" 
     android:name="meng.jerry.fragmentexample.OppositeFragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_below="@+id/text_fragment" 
     android:layout_marginTop="16dp" 
     tools:layout="@layout/opposite_fragment" /> 

</RelativeLayout> 

답변

1

, 당신은

sOppositeView = (TextView) view.findViewById(R.id.textView1); 
텍스트 뷰

에 대한 잘못된 ID를 사용하는

실제로이 XML이 포함되어 있습니다.

android:id="@+id/oppositeTextView" 
+0

답장 보내 주셔서 감사합니다. 나는 그것이 오류를 일으켰을 것이라고 생각하지만 실제로 내가 얻고있는 것을 돕지는 못했다. – JeryBeary

+0

텍스트 뷰 ID를 변경 한 다음 작동하지 않는지 확인하십시오. –

+0

슬프게도. 아닙니다. 다른 것으로 보입니다. :/ – JeryBeary

관련 문제