2014-09-06 166 views
0

我想編寫一個簡單的Android應用程序與one buttonone slider:我java program是如下:搜索欄和按鈕不起作用

package com.example.android.apis.view; 

import com.example.android.apis.R; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.Button; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
import android.widget.TextSwitcher; 
import android.widget.TextView; 
import android.widget.ViewSwitcher; 

/** 
* Uses a TextSwitcher. 
*/ 
public class TextSwitcher1 extends Activity implements ViewSwitcher.ViewFactory, 
     View.OnClickListener, OnSeekBarChangeListener { 

    SeekBar mSeekBar; 
    TextView mProgressText; 
    TextView mTrackingText; 
    private TextSwitcher mSwitcher; 

    private int mCounter = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.text_switcher_1); 
     setContentView(R.layout.seekbar_1); 

     mSeekBar = (SeekBar)findViewById(R.id.seek); 
     mSeekBar.setOnSeekBarChangeListener(this); 

     mProgressText = (TextView)findViewById(R.id.progress); 
     mTrackingText = (TextView)findViewById(R.id.tracking); 

     mSwitcher = (TextSwitcher) findViewById(R.id.switcher); 
     mSwitcher.setFactory(this); 

     Button nextButton = (Button) findViewById(R.id.next); 
     nextButton.setOnClickListener(this); 

     updateCounter(); 
    } 

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { 
     mProgressText.setText(progress + " " + 
       getString(R.string.seekbar_from_touch) + "=" + fromTouch); 
    } 

    public void onStartTrackingTouch(SeekBar seekBar) { 
     mTrackingText.setText(getString(R.string.seekbar_tracking_on)); 
    } 

    public void onStopTrackingTouch(SeekBar seekBar) { 
     mTrackingText.setText(getString(R.string.seekbar_tracking_off)); 
    } 

    public void onClick(View v) { 
     mCounter++; 
     updateCounter(); 
    } 

    private void updateCounter() { 
     mSwitcher.setText(String.valueOf(mCounter)); 
    } 

    public View makeView() { 
     TextView t = new TextView(this); 
     t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
     t.setTextSize(36); 
     return t; 
    } 
} 

我得到這個錯誤:

The method setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener) in the type SeekBar is not applicable for the arguments (TextSwitcher1) in this line : mSeekbar.setonSeekbarChangeListener(this); 

我不知道這個問題是什麼,請你幫我解決。
非常感謝您提前,斯蒂芬

+0

這似乎是正確的,清潔的項目可能是有幫助 – 2014-09-06 09:44:32

+0

謝謝Arash。是的,我已經清理了它,但它不起作用。我想附上我的整個代碼,但我不知道我可以將我的代碼附加到此頁面上嗎?請將您的電子郵件發送給我,以便將您的整個代碼發送給我?謝謝您好。斯特凡 – Stefan 2014-09-06 12:37:06

+0

對不起,我的個人資料中無法看到您的電子郵件地址,因爲您的個人資料是私密的,因爲您無法在我的個人資料中看到我的電子郵件地址。請您在此給我寫下您的電子郵件地址。非常感謝。 Stefan – Stefan 2014-09-06 13:37:33

回答

0

問題是你使用setContentView兩次,所以第一個佈局將被秒取代,任何引用到您的第一個佈局將爲空。

setContentView(R.layout.text_switcher_1); 
setContentView(R.layout.seekbar_1); 

使用您的主要佈局內的另一個資源視圖,您應該誇大該佈局視圖,則初始化它的子視圖如下面的代碼:

setContentView(R.layout.text_switcher_1); 

    LayoutInflater inflater = (LayoutInflater)this.getSystemService(this.LAYOUT_INFLATER_SERVICE); 
    View layoutSeekBarView = inflater.inflate(R.layout.seekbar_1, null); 

    mSeekBar = (SeekBar)layoutSeekBarView.findViewById(R.id.seek); 
    mSeekBar.setOnSeekBarChangeListener(this); 

    mProgressText = (TextView)layoutSeekBarView.findViewById(R.id.progress); 
    mTrackingText = (TextView)layoutSeekBarView.findViewById(R.id.tracking); 

    mSwitcher = (TextSwitcher)this.findViewById(R.id.switcher); 
    mSwitcher.setFactory(this); 

    Button nextButton = (Button) findViewById(R.id.next); 
    nextButton.setOnClickListener(this); 
+0

感謝Arash.I應用了這些更改,但它仍然無法正常工作。 – Stefan 2014-09-07 08:54:22