ユーザーがクリックした内容に基づいてフラグメント内のテキストビューを更新しようとしています。最初にアクティビティを読み込むと、テキストビューが設定されます。しかし、後で、たとえtextview.settextが呼び出されても、何も変わっていないようです。私の活動でフラグメント内のtextview.settextが最初の呼び出し後に機能しない
は、私はこのような新しい変数を送信します。
getSupportFragmentManager().beginTransaction().add(R.id.pager1, SecondFragment.newInstance(2, "Page # 2", nonStaticRandomInfoSt), "tag").commit();
マイ・フラグメントを:
public static SecondFragment newInstance(int page, String title, String randomInfo) {
SecondFragment fragmentSecond = new SecondFragment();
Bundle args = new Bundle();
args.putInt("someInt", page);
args.putString("someTitle", title);
args.putString("randomInfo", randomInfo);
fragmentSecond.setArguments(args);
return fragmentSecond;
}
// Store instance variables based on arguments passed
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
randomInfo = this.getArguments().getString("randomInfo");
}
// Inflate the view for the fragment based on layout XML
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_second, container, false);
TextView randomInfoTV = (TextView) view.findViewById(R.id.randomInfo);
randomInfoTV.setText(randomInfo); //this is getting called, but it's not changing the textview
randomInfoTV.setMovementMethod(new ScrollingMovementMethod());
return view;
}
編集:
私はviewpagerでフラグメントを持っています。アクティビティが最初に入力されると、フラグメントのテキストビューにデフォルト値が設定されます。私の活動レイアウトのリストビューから、ユーザーは選択を行うことができます。アイテムが選択されると、私はフラグメントマネージャを呼び出し、新しいrandomInfo変数を渡します。私はその断片のテキストビューを更新したい。私は正しい値がデバッグによって渡されていることを知っています。私はtextview.settextも呼び出されていることを知っています。しかし何らかの理由で、テキストビューは変更されません。なぜこのようなことが起こっているのかについての示唆はありますか?私はそれを修正することをどこで始めるべきかも知らない。私は断片の作成方法
:
public static class MyPagerAdapter1 extends FragmentPagerAdapter {
private static int NUM_ITEMS = 2;
public MyPagerAdapter1(FragmentManager fragmentManager) {
super(fragmentManager);
}
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0 - This will show FirstFragment
return FirstFragment.newInstance(0, "Page # 1", imageURL);
case 1: // Fragment # 0 - This will show FirstFragment different title
return SecondFragment.newInstance(2, "Page # 2", randomInfoSt);
default:
return null;
}
}
Clickイベントのコードを、 public void onViewCreated(final View view, final Bundle savedInstanceState);
代わりのonCreateView()
でテキストを設定
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
// TODO Auto-generated method stub
if (!fromservice) {
Log.i(TAG, "about to start service");
//starting service code...
initFragmentVars(position); //this runs the fragmentmanager transaction
}
?私は1つだけを参照してください – yanivtwin
'nonStaticRandomInfoSt'とは何ですか、それは決して変更されませんでしたか? – WenChao
ユーザーがあなたのアプリとどのようにやり取りし、何が起こるかを説明してください。次に、**あなたが望むものを**説明してください。 –