私はそれぞれのコードでの断片があります。私のMainActivityでボタンをクリックすると、フラグメント内のTextViewをどのように更新できますか?
public class Fragment1 extends Fragment {
public static Fragment1 newInstance() {
Fragment1 fragment = new Fragment1();
return fragment;
}
public Fragment1() {
// Deve existir um construtor vazio
// na classe que estende um Fragment
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.activity_fragment1, container, false);
}
public void changeText(){
//this textview should be bound in the fragment onCreate as a member variable
TextView frv= (TextView) getView().findViewById(R.id.msgStatusPorta);
frv.setText("Porta Atualmente Aberta");
}
を、私はこれを行う:
FragmentManager fm = getSupportFragmentManager(); //if you added fragment via layout xml
Fragment1 fragment = (Fragment1)fm.findFragmentById(R.id.fragment1);
とのonClickで
、私は私がしようとfragment.changeText(view);
を行いますChangeText()メソッドからTextviewを更新するボタンをクリックしてこのメソッドが呼び出されると、アプリケーションがクラッシュすることがありますか?
ありがとうございました。あなたのフラグメントで
private MyFrag fragment; //MyFrag is your fragmemt
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
fragment = (MyFrag)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
Button yourbutton = (Button) findViewById(R.id.yourbutton);
yourbutton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
fragment.setEditText("Your Text");
});
:
それはchangeText(vを見る) –
どこから 'changeText'が呼ばれましたか?ビューが存在することを保証するには、ビューがonViewCreatedまたはそれ以降にあることを確認する必要があります。 –