2017-01-15 4 views
-2

私のアプリがopen中にシステムによって閉じられていることに気付きましたが、nullpointexceptionがあります。 私はここに活動があります。私はデータフォームdbを取得し、オブジェクトを作成します。それから私は新しいフラグメントを作成し、作成者の前に設定してセッターで賞賛します。フラグメントマネージャを使用してフラグメントを表示します。私のオブジェクトを持つonCreateメソッドのフィールドがnullであるため、ここに問題があります。私はオブジェクトを設定したと確信して、それはnullではなかった。私は、DBからデータを取得し、断片アプリケーションがシステム(Android)によって閉じられた後にのみアプリケーションを実行しようとするとNullpointexceptionが発生する

public class ActivityForSingle extends AppCompatActivity { 
    Employee emloyee; 

    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_for_single); 
    ... 

    getEmployee(); // here I get emplyee from db and create employee object 

    SitePersonFragment f = new SitePersonFragment(); 
      f.setEmpoyee(employee); // here emplyee is not null 
      getSupportFragmentManager().beginTransaction().add(R.id.frameForFragment, f, "USER_SITE").commit(); 


} 


public class SitePersonFragment extends Fragment implements Update, DatePickerDialog.OnDateSetListener { 

Employee employee; 

    setEmployee(Employee e){ 
     this.emplyee = e; 
    //here e and employee is not null 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    //here employee is null 
    // why?? 
} 

何が起こったの作成

活動?アプリが破壊されたのでデバッグできません。

+0

あなたは何を意味するかを変更(直列化またはParcelableクラスが必要ですか)? System.exitのメソッドを使うべきではありません –

+1

そして、Fragmentsのsettersを使うのは、オブジェクトを初期化するためのパターンではないことがよくあります。あなたのコードをAndroidで[mcve] –

+0

として表示してください。 Androidが必要な場合は別の魔法使いが使用されていません。 – JavaMan

答えて

0
@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    //here employee is null 
    // why?? 
} 

従業員を設定する前にビューが作成される可能性があるためです。

さらに、getEmployee() ...それは何かを返しますか? emloyeeは、投稿したコードには決して割り当てられません。なぜそれがヌルではないでしょうか?

関連:Best practice for instantiating a new Android Fragment

+0

私はそれを確認します。私はログを入れて何が最初であるかを確認しますが、最初にEmployeeを設定してからonViewCreated()を呼び出すと思います – JavaMan

+0

あなたの質問は完全なコードではなく、コンパイルしてはいけないので、修正することをお勧めします。 –

+0

It isntすべてを段階的に示しています。もちろん、フラグメントには 'onCreateView'があります。 – JavaMan

0

私は、 "システムによって"「pracownikFragment to F`

関連する問題