2017-12-30 13 views
-1

조각에서 작동하는 앱을 수정하려고합니다. 한 조각을 추가하려고하는데 다른 응용 프로그램에서 한 번보기로 tab_1이라고 부르 자. 이 때문에 내가가상 메소드 호출 시도 'void android.view.View.setOnClickListener

public class Tab1 extends Fragment implements View.OnClickListener { 


    private OnFragmentInteractionListener mListener; 

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     super.onSaveInstanceState(savedInstanceState); 
    } 

    public Tab1() { 
     // Required empty public constructor 
    } 

    public static Tab1 newInstance(String param1, String param2) { 
     Tab1 fragment = new Tab1(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 
     getActivity().setContentView(R.layout.activity_main); 
     sharedPreferences = getActivity().getSharedPreferences(PREFERENCES_NAME, MainActivity.MODE_PRIVATE); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (!isOnline()) { 
        textViewTemperature.setText(restoreData("TEMP")); 
        Toast.makeText(getActivity().getApplicationContext(), "Cannot connect to network, data will be restore from file with last downloaded data...", Toast.LENGTH_LONG).show(); 
       } else { 
        Thread t = new Thread(new Runnable() { 
         @Override 
         public void run() { 
          try { 
           weather = parser.getWeatherForLocation(editText.getText() + ""); 
           getActivity().runOnUiThread(new Runnable() { 
            @Override 
            public void run() { 
             editText.setText(weather.getCity() + ", " + weather.getCountry()); 
             textViewTemperature.setText("Temperature: " + weather.getTemperature()); 
             saveData(textViewTemperature.getText() + "", "TEMP"); 
            } 
           }); 
          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
         } 
        }); 
        t.start(); 
       } 
      } 
     }); 
     sharedPreferences = getActivity().getSharedPreferences("file_name", getActivity().MODE_PRIVATE); 
     buttonExit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       getActivity().finish(); 
       System.exit(0); 
      } 
     }); 
     buttonAbout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivity(new Intent(getActivity().getApplicationContext(), AboutActivity.class)); 
      } 
     }); 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_tab1, container, false); 
    } 

    @Override 
    public void onClick(View v) { 

    } 

인가 tab_1.class의 코드를 여기에 문제를

E/AndroidRuntime: FATAL EXCEPTION: main 
               Process: com.example.chirag.slidingtabsusingviewpager, PID: 4586 
               java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
                at com.example.chirag.slidingtabsusingviewpager.Tab1.onCreate(Tab1.java:100) 
                at android.support.v4.app.Fragment.performCreate(Fragment.java:2226) 
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290) 

원인이다 listiner이 어떤 사용하고, 다운로드 데이터 버튼에 사용자가 클릭 후 날씨 앱입니다 이 문제를 해결하는 방법은? 앱이 계속 충돌합니다.

답변

0

보기 참조 개체를 기본값 인 findViewById(int id)Activity의 방법으로 바인딩하지 않은 것 같습니다. 그게 네가 NPE를 얻는 이유야.

코드에 뷰 참조 바인딩 블록을 포함하지 않은 경우 뷰가없는 경우 id으로 바인딩하거나 다른 레이아웃에서 볼 가능성이 있습니다.

레이아웃 마크 업과 바인딩 뷰 참조 코드를 다시 한 번 확인해보십시오. 도움이 될 것입니다.

관련 문제