AndroidはFragmentを使用しており、Fragmentの内部コントロールを得ることはできません.findView ById()の結果はNull--解決しました.
2773 ワード
プログラムはとても简単で、とても长い时间が终わっていないで、気がふさぎます......フォーラムで問い合わせて、やっと答えを見つけた.
説明:
Activity:MainActivity、内部はFragment:FragmentA、FragmentAにはTextViewが入っています.
質問:どうしてもFragmentA内部のTextViewが得られず、戻り値は常にNull
詳細:
MainActivityのlayout:activity_main.xml
MainActivity.java
FragmentA.java
具体的な質問:
FragmentAでonActivity Created()では、
TextView textView1 = (TextView) getView().findViewById(R.id.textView1); 得られたのは常にNullです.
FragmentでonCreateView()では、
public ViewonCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){2番目のパラメータcontainerは常に空の値です
MainActivityでは、findViewById(R.id.textView 1)も空の値です.
問題はどこですか???
===============================================================================================================
の原因となる
Activityにandroidを引き継ぐsupport.v4.app.FragmentActivity、Fragmentにandroidを継承させます.support.v4.app.Fragmentでいい
このように、FragmentAのonStartなどの方法では、getActivity().findViewById(R.id.textView 1)でこのTextViewが得られます.直接引き継ぐapp.Fragment、だめです.Androidのバグかもしれません.実は私はdeveloper.に従っています.android.comのtrainningの例はandroid 3と互換性があるためです.0以前のシステムはandroidを継承しています.support.v4.app.Fragment、公式の例は正常に動作しています.私の携帯はAndroid 4です.1の、Fragmentをサポートできるので、私は直接adnroidを継承しました.app.Fragment、結局死んでも成功しない.この原因とは思いもよらなかった.
説明:
Activity:MainActivity、内部はFragment:FragmentA、FragmentAにはTextViewが入っています.
質問:どうしてもFragmentA内部のTextViewが得られず、戻り値は常にNull
詳細:
MainActivityのlayout:activity_main.xml
FragmentAのlayout:fragment_a.xml
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
FragmentA.java
public class FragmentA extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_a, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// TextView textView1 = (TextView) getView().findViewById(R.id.textView1);
// textView1.setText(" ");
}
具体的な質問:
FragmentAでonActivity Created()では、
TextView textView1 = (TextView) getView().findViewById(R.id.textView1); 得られたのは常にNullです.
FragmentでonCreateView()では、
public ViewonCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){2番目のパラメータcontainerは常に空の値です
MainActivityでは、findViewById(R.id.textView 1)も空の値です.
問題はどこですか???
===============================================================================================================
の原因となる
Activityにandroidを引き継ぐsupport.v4.app.FragmentActivity、Fragmentにandroidを継承させます.support.v4.app.Fragmentでいい
このように、FragmentAのonStartなどの方法では、getActivity().findViewById(R.id.textView 1)でこのTextViewが得られます.直接引き継ぐapp.Fragment、だめです.Androidのバグかもしれません.実は私はdeveloper.に従っています.android.comのtrainningの例はandroid 3と互換性があるためです.0以前のシステムはandroidを継承しています.support.v4.app.Fragment、公式の例は正常に動作しています.私の携帯はAndroid 4です.1の、Fragmentをサポートできるので、私は直接adnroidを継承しました.app.Fragment、結局死んでも成功しない.この原因とは思いもよらなかった.