2017-03-05 3 views
0

Verwendung Ich habe ein Fragment einer Aktivität gebunden. Innerhalb des Fragments höre ich die Änderungen, die an der Suchleiste vorgenommen wurden, aber auf die Methode 'onProgressChanged' wird nie zugegriffen. Auch wenn ein Textview-Variable zu ändern versuchen, die auch in dem Fragmente ist, es ändert nicht seinen Wert (die Textview Variable sollte den Wert des seekbar angezeigtSeekBar in einem Fragment android

Hier ist der Code, die ich verwendet habe.

Haupttätigkeit

public class NearbyActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_nearby); 

    // add map fragment 
    NearbyFragment nearbyFragment = (NearbyFragment) getSupportFragmentManager().findFragmentById(R.id.nearby_fragment); 

    if (nearbyFragment == null) { 
     nearbyFragment = NearbyFragment.newInstance(); 
     getSupportFragmentManager() 
       .beginTransaction() 
       .add(R.id.container_bar, nearbyFragment) 
       .commit(); 
    } 
} 

Fragment

public class NearbyFragment extends Fragment implements OnSeekBarChangeListener{ 
private TextView distance; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_nearby, container, false); 

    final SeekBar seekBar = (SeekBar) rootView.findViewById(R.id.seekBar); 

    distance = (TextView) rootView.findViewById(R.id.distance); 

    seekBar.setProgress(50); 
    distance.setText("ass"); 

    seekBar.setOnSeekBarChangeListener(this); 

    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_nearby, container, false); 
} 

@Override 
public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
    distance.setText("" + i); 
} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 

} 

@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 

} 

Fragment xml

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <SeekBar 
     android:layout_width="241dp" 
     android:layout_height="wrap_content" 
     android:id="@+id/seekBar" 
     android:layout_marginStart="60dp" 
     android:layout_marginEnd="60dp" /> 

    <TextView 
     android:text="0" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/distance" 
     android:gravity="center"/> 

</LinearLayout> 

Antwort

1

Änderung dieser Linie

return inflater.inflate(R.layout.fragment_nearby, container, false); 

zu

return rootView; 

in Ihrem onCreateView