2017-04-21 1 views
0

私はアンドロイドアプリのシークバーリスナーを実装しようと時間を費やしてきました。アプリケーションを起動するたびにクラッシュします。 シークバーを、シークバー上で手動で変更できるしきい値にリンクしようとしています。これは、シークバーのための私のレイアウトxmlファイルで次のようにアンドロイドシークバーのリスナーを実装するためにxmlレイアウトを拡張するにはどうすればよいですか?

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="126dp" 
android:layout_height="wrap_content" 
android:minWidth="56dp"> 

<RelativeLayout 
    android:layout_width="188dp" 
    android:layout_height="match_parent"> 

    <SeekBar 
     android:id="@+id/seekBar" 
     style="@android:style/Widget.SeekBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_toStartOf="@+id/progressBar" 
     android:max="127" 
     android:progress="2" /> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_marginEnd="60dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignBottom="@+id/seekBar" /> 
</RelativeLayout> 

私の実装が見えます:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getActionBar().setTitle(R.string.title_devices); 
    mHandler = new Handler(); 
    getLayoutInflater().inflate(R.layout.actionbar_indeterminate_progress, null); 
    setContentView(R.layout.actionbar_indeterminate_progress); 
    final int step = 1; 
    final int max = 0; 
    final int min = -127; 
    Threshold = (SeekBar) findViewById(R.id.seekBar); 
    //Threshold.setMax((max - min)/step); 
    Threshold.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     int progressChangedValue; 
     //@Override 
     public void onProgressChanged(SeekBar Threshold, int progress, 
             boolean fromUser) 
     { 
      // if progress = 13 -> value = 3 + (13 * 0.1) = 4.3 
      double value = min + (progress * step); 
      progressChangedValue = (int) value; 
      //progressChangedValue = progress; 
     } 
     //@Override 
     public void onStartTrackingTouch(SeekBar Threshold) {} 

     //@Override 
     public void onStopTrackingTouch(SeekBar Threshold) { 
      mThreshold = progressChangedValue; 
      Toast.makeText(DeviceScanActivity.this, "Threshold has been set to: " + progressChangedValue, 
        Toast.LENGTH_SHORT).show(); 
     } 

    }); 
} 

誰でもアプリのクラッシュを引き起こす可能性がどのようなヒントを持っていますか?そして私はどのように問題を解決することができましたか?

ありがとうございます!

setContentView()方法があなたのために同じことを同じようにあなたが自分でレイアウトを膨らませる必要はありませんSayus

答えて

0

コードからgetLayoutInflater().inflate(R.layout.actionbar_indeterminate_progress, null);を削除すると、クラッシュが停止します。

+0

@ Jack Ray:ありがとうございます。しかし、私が削除した後も私のアプリケーションはクラッシュします:getLayoutInflater()。inflate(R.layout.actionbar_indeterminate_progress、null); – Sayus

+0

ここにエラートレースを投稿して、あなたの問題をより詳しく見ることができますか? –

関連する問題