2017-11-18 6 views
-1

액티비티의 데이터 문자열을 번들을 사용하여 프래그먼트로 보내려고했지만 액세스를 시도 할 때 nullpointerexception이 발생합니다. 나는 ',nullpointer 예외를 액티비티에서 프래그먼트로 보내는 중 onCreate

활동의 한 OnCreate 방법이

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

    // Setup toolbar and title 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    readDb(); 
    printChart(); 
    printTop10(); 

    Bundle bundle = new Bundle(); 
    bundle.putString("edttext", myString); 
    // set Fragmentclass Arguments 
    ToolbarFragment fragobj = new ToolbarFragment(); 
    fragobj.setArguments(bundle); 

} 

같은 외모와 onCreateView의 단편은 이해할 수있을 것 nullpointer 제거하는이

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    String strtext = getArguments().getString("edttext"); 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_toolbar, container, false); 
} 

도움과 같다 m 공유 버튼을 사용하여 데이터를 공유 할 수 있도록 조각에 데이터를 보내려고합니다.

+0

당신은 어디에서나'fragobj'를 거래하지 않습니다. 'ToolbarFragment'를'Activity'에 얼마나 정확히로드하고 있습니까? –

답변

0

"edttext"키를 가져 오는 것은 null이 원인 인 것 같습니다. 실제로 어떤 값도 할당되지 않았을 때 트리거되므로 기본값을 사용하여 "edttext"키를 얻는 것이 null을 피할 수 있다고 생각합니다.

이 삭제 :

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 

//in this line add these "" as a default value to avoid null. 

String strtext = getArguments().getString("edttext",""); 

// Inflate the layout for this fragment 
return inflater.inflate(R.layout.fragment_toolbar, container, false); 
    } 

편집

이전 대답을 잊고이 수행 단편의 oncreateview에 그 좋아하세요

  Bundle bundle = new Bundle(); 
bundle.putString("edttext", myString); 
// set Fragmentclass Arguments 
ToolbarFragment fragobj = new ToolbarFragment(); 
fragobj.setArguments(bundle); 

및 활동 이름이 (My 활동), 다음 지금 조각에 가서 조각

  private String strtext=""; 

      @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

//now get the string like that 

    strtext=((MyActivity)getActivity).getmyString(); 

// Inflate the layout for this fragment 
return inflater.inflate(R.layout.fragment_toolbar, container, false); 

}

이 같은 oncreateview

String strtext = getArguments().getString("edttext"); 

에서이를 제거 할 한 OnCreate

 private String myString="whatever"; 

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

     // Setup toolbar and title 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     readDb(); 
     printChart(); 
     printTop10(); 


     } 


    //add this method (this method will send the myString to fragment) 
    public String getmyString(){ 


    return myString; 
    } 

에서이 작업을 수행 업데이트

1) (items) 목록이 null이 아닌지 확인하십시오. 데이터를 채우기 전에 초기화해야합니다 (문제를 감지하기 위해 항목 목록을 채우는 방법을 보여주는 것이 더 나을 수도 있습니다).

2) getmystring이 시도() 메소드 :

  public String getmyString(){ 

     for(int i=0 ; i<items ; i++){ 

      myString=items.get(i); 
     } 

     return myString; 
     } 

는 당신이 아무것도 채우기 전에에서 onCreate에서 항목 목록을 초기화하는 것을 잊지 마세요.

+0

그것은 다음과 같이 추락했습니다. 발생 원인 : java.lang.NullPointerException : 가상 메소드 'java.lang.String android.os.Bundle.getString (java.lang.String, java.lang.String)'을 호출하려고 시도했습니다. edertext – Kevin

+0

뒤에 ""를 추가하는 null 객체 참조는 비어있는 (mystring)을 전달하고 있습니까? 아니면 값이 있습니까? –

+0

(mystring)에 대한 코드를 붙여 넣습니다. 어떻게 값을 설정합니까? –