2014-07-09 2 views
1

안녕하세요. Frends입니다. 다음 페이지의 버튼에 내 애플리케이션의 마법사가 활성화되어 있어야합니다. 이름에 단어가 하나 있고 마피아 번호 legth가 10 인 경우 활성화되어 있어야합니다. 조각 Activty 여기 수 있도록 내 코드를 살펴해야합니다조각과 활동 사이에 데이터를 전달하면 null 포인트 예외가 발생합니다.

조각 활동

public class Intro_Main extends FragmentActivity implements ButtonenableListner{ 
DataModel data; 
Button next; 
Context context; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.l_intro_main); 
    context=this; 
    data=new DataModel(); 
    next=(Button)findViewById(R.id.button); 
    if(findViewById(R.id.fm)!=null) 
    { 
    Step1 s1=new Step1(); 
     s1.setArguments(getIntent().getExtras()); 
     getSupportFragmentManager().beginTransaction().add(R.id.fm,s1).commit(); 
    } 



} 
public void setname(String s){ 
    data.Name=s; 
} 
public void setnumber(String s){ 
    data.Number=s; 
} 
public void goto2(View v) 
{ 

    Step2 s2 =new Step2(); 
    s2.setArguments(getIntent().getExtras()); 
    FragmentManager fragmentManager; 
    fragmentManager = getSupportFragmentManager(); 

    FragmentTransaction transaction = fragmentManager.beginTransaction(); 
    transaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit); 


    transaction.replace(R.id.fm, s2); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
} 




@Override 
public void enableButton(Boolean b) { 
    if (b) 
     next.setEnabled(true); 
    else 
      next.setEnabled(false); 
} 

}

조각

public class Step1 extends android.support.v4.app.Fragment{ 
EditText name,mob; 
public String s; 
public ButtonenableListner listner; 
Boolean s1,s2=false; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.f_step_1, container, false); 
    name=(EditText)view.findViewById(R.id.editText); 
    mob=(EditText)view.findViewById(R.id.editText2); 

    name.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

      if (i3 != 0) 
      { 
       s2=true; 
      } 
      else 
       s2=false; 
      checkbothfield(); 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 
    mob.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

      if (i3==10) 
      { 
       s2=true; 
      } 
      else 
       s2=false; 
      checkbothfield(); 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 


     } 
    }); 

    return view; 
} 

private void checkbothfield() { 
    if (s1==true && s2==true) 
    listner.enableButton(true); 
    else 
     listner.enableButton(false); 
} 

@Override 
public void onStop() { 
    DataModel.Name=name.getEditableText().toString(); 
    DataModel.Number=mob.getEditableText().toString(); 

    super.onStop(); 
} 


@Override 
public void onPause() { 
    DataModel.Name=name.getEditableText().toString(); 
    DataModel.Number=mob.getEditableText().toString(); 
    super.onPause(); 
} 

}

여기에서 막혔어요 제발 도와주세요 내가 일부러

답변

0

제대로 문제를 이해 .. 감사하지만 난 당신이 조각 활동에 다시 데이터를 보낼 필요가 있다고 생각합니다. 내가 할 방법은 fragmentActivity에서 public boolean을 만들고 getter 및 setter 함수를 만드는 것입니다.

public boolean dataFilled; 

public boolean isDataFilled() { 
    return dataFilled; 
} 

public void setDataFilled(boolean dataFilled) { 
    this.dataFilled = dataFilled; 
} 

처음에는 false로 설정합니다. 단지 부울의 값을 확인 다시 돌아 오는

((Intro_main)getActivity).setDataFilled(true); 

:

그런 다음 setter 함수를 조각 사용 getActivity()에서 활동을 취득하고 FragmentActivity에 캐스팅하고 호출합니다.

**이 경우 당신은 조각에 fragmentActivity에서 데이터를 전송해야합니다

사용하여 새 1 단계 및 인수를 호출 : 조각 한 OnCreate 사용 getArguments에서

Bundle bd = new Bundle; 
bd.addString(key,value); 

()을 얻을 번들하고 데이터를 추출하십시오.

+0

해결책 Parth를 얻었습니까 ?? – Rohan

+0

Thnk you Rohan 도움을 받으 셨습니다. –