2017-12-29 26 views
-3

の内側に私は活動が、ここで、開始されEditText値を設定しようとしていることは、私がやっているものです:私はそれを実行したとき、私はこのエラーを取得し、設定のEditText値のonCreateフラグメント

 @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      SharedPreferences mPrefs = this.getActivity().getSharedPreferences("userinfoafterlogin", MODE_PRIVATE); //add key 
      String response = mPrefs.getString("userinfo", null); 

      try{ 
       JSONObject json = new JSONObject(response); 
       json = (JSONObject)json.get("nameValuePairs"); 
       json = (JSONObject)json.get("userData"); 
       json = (JSONObject)json.get("nameValuePairs"); 
       String fullname = (String)json.get("fullname"); 
       String username = (String)json.get("username"); 

       EditText editText = (EditText)getActivity().findViewById(R.id.fullnametext); 
       editText.setText(fullname); 

       Log.i("data", " retrieve --> " + fullname); 
      }catch (JSONException e) { 
       Log.e("MYAPP", "unexpected JSON exception", e); 
      } 
    } 

をしかし

12-29 14:29:48.321 3273から3273/com.example.boby.srsly E/AndroidRuntime: 致命的な例外:メイン プロセス:com.example.boby.srsly、PID:3273 れるjava.lang .NullPointerException でandroid.app.Fragment.performCreateでcom.example.boby.srsly.ProfilFragment.onCreate(ProfilFragment.java:71) (Fragment.java:1678) でandroid.app.FragmentManagerImpl.moveToState(FragmentManager.java :859) android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062で) android.app.FragmentManagerImpl.execPendingActionsでandroid.app.BackStackRecord.run(BackStackRecord.java:684) で(FragmentManager.java :1447)android.app.FragmentManagerImpl $ 1.run(FragmentManager.java:443)の とandroid.os .Handler.handleCallback(Handler.java:733)android.os.Handler.dispatchMessage(Handler.java:95)の とandroid.os.Looper.loop(Looper.java:136) とandroid.app.ActivityThread .main(ActivityThread.java:5019) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal dalvik.system.NativeStart.mainでcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) で.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779) (ネイティブメソッド)

どうすれば修正できますか?

私は今、私はこのエラー

12-29 14だonCreateView

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View v = inflater.inflate(R.layout.fragment_profil, container, false); 
    SharedPreferences mPrefs = this.getActivity().getSharedPreferences("userinfoafterlogin", MODE_PRIVATE); //add key 
    String response = mPrefs.getString("userinfo", null); 

    try{ 
     JSONObject json = new JSONObject(response); 
     json = (JSONObject)json.get("nameValuePairs"); 
     json = (JSONObject)json.get("userData"); 
     json = (JSONObject)json.get("nameValuePairs"); 
     String fullname = (String)json.get("fullname"); 
     String username = (String)json.get("username"); 

     EditText editText = (EditText)v.findViewById(R.id.fullnametext); 
     editText.setText(fullname); 
     Log.i("data", " retrieve --> " + fullname); 
     return v; 
    }catch (JSONException e) { 
     Log.e("MYAPP", "unexpected JSON exception", e); 
     return v; 
    } 

} 

内側に移動:35:09.801 3383から3383/com.example.boby.srsly E/AndroidRuntimeを: 致命的除外:メイン プロセス:com.example.boby.srsly、PID:3383 java.lang.ClassCastException: android.support.v7.widget.AppCompatTextViewはにキャストできません android.appでandroid.app.Fragment.performCreateViewで com.example.boby.srsly.ProfilFragment.onCreateView(ProfilFragment.java:78) (Fragment.java:1700) におけるandroid.widget.EditText 。 android.app.BackStackRecord.runでFragmentManagerImpl.moveToState(FragmentManager.java:890) でandroid.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) (BackStackRecord.java:684) android.appました。 FragmentManagerImpl。android.os.Handler.dispatchMessageでandroid.app.FragmentManagerImpl $ 1.run(FragmentManager.java:443)android.os.Handler.handleCallback(Handler.java:733)で でexecPendingActions(FragmentManager.java:1447) (ActivityThread.java:5019) at java.lang.reflect.Method.invokeNative (ネイティブメソッド) at java.lang.reflect.Mava.subs dalvik.system.NativeStart.main(ネイティブメソッド)

+0

に変更する必要がありますか? – R2R

+0

@ R2Rはい、それは断片です – Bossby

+2

ビューを更新するコードをonCreateではなくonCreateViewに移動してみてください。 –

答えて

1

あなたはfragmentライフサイクルFragmentsについて学ぶ必要がありまず。フラグメントのonCreateでは、ビューは作成されません。ビューは、あなたがこの方法であなたのレイアウトウィジェットを移動する必要があるフラグメント

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View v = inflater.inflate(R.layout.yourView, container, false); 
editText = (EditText)v.findViewById(R.id.fullnametext); 
     editText.setText(fullname); 
} 

onCreateView方法で作成されます。

そして、あなたの2番目のエラーについてあなたはおそらく間違ったウィジェットをキャストしている

例外:メインプロセス:com.example.boby.srsly、PID:3383にjava.lang.ClassCastException:android.support。 v7.widget.AppCompatTextViewがandroid.widget.EditTextにキャストすることはできません

だから、このようにそれを実行する必要があります。

AppCompatTextView textview; 
textview= (AppCompatTextView)v.findViewById(R.id.fullnametext); 
      textview.setText(fullname); 

または編集の必要がある場合は、AppCompatTextViewEditText

+0

'editText =(EditText)v.findViewById(R.id.fullnametext);' – Prem

0

最初はcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) であなたのfragmentonActivityCreated()メソッドをオーバーライドして初期化する必要がありますEditTextの上にactivitycreated()メソッドがあります。

EditText editText ; 

このような
@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    editText = (EditText)getActivity().findViewById(R.id.fullnametext); 
      editText.setText(fullname); 
} 
関連する問題