2017-02-14 3 views
0

Я пытаюсь обновить текстовое изображение в своем фрагменте на основе того, что пользователь нажимает. Когда я сначала загружаю действие, он устанавливает текстовое представление. Но позже, даже несмотря на то, что textview.settext вызывает вызов, ничего не меняется.textview.settext в Fragment не работает после первого вызова

В моей деятельности я посылаю новую переменную так:

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; 
} 

Edit:

У меня есть фрагмент в 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 код события;

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

где еще вы делаете SetText? я вижу только – yanivtwin

+1

что такое 'nonStaticRandomInfoSt', может быть, он никогда не менялся? – WenChao

+0

Пожалуйста, объясните, как пользователь взаимодействует с вашим приложением и что происходит. Затем объясните, что вы ** хотите **. –

ответ

0

Установите текст в public void onViewCreated(final View view, final Bundle savedInstanceState); вместо onCreateView().

Позже это нормально для того, что вы делаете (findViewById()), но привязка данных + представление должно выполняться после создания представлений, особенно внутри фрагмента.

Я знаю, что это сбивает с толку, но Android Жизненный беспорядок, созданный десятками различных разработчиков программного обеспечения и здесь мы ...

+1

Это не имеет существенного отличия. –

+0

Он делает, если вы используете фрагменты. Есть причина, почему callback существует. –

+0

Нет, нет. То, как op делает это, прекрасно. –

 Смежные вопросы

  • Нет связанных вопросов^_^