2010-04-06 6 views
1

클릭하면 내보기에서 디스플레이 번호를 업데이트하는 첫 번째 버튼을 얻으려고합니다. 이보기에는 여러 개의 버튼과 "출력"이 표시됩니다. 예제와 Q를 읽은 후에 마침내 함께 실행 해 보았지만 첫 버튼은 여전히 ​​작동하지 않습니다.버튼을 작동시키는 데 도움이 필요합니다.

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ship_layout); 
     mSwitcher = (TextSwitcher) findViewById(R.id.eng_val); 
     } 

    private TextSwitcher mSwitcher; 

     // Will be connected with the buttons via XML 
     void onClick(View v){ 

      switch (v.getId()) { 
      case R.id.engplus: 
       engcounter++; 
       updateCounter(); 
       break; 
      case R.id.engneg: 
       engcounter--; 
       updateCounter(); 
       break; 
      } 
     } 
    private void updateCounter() { 
     mSwitcher.setText(String.valueOf(engcounter)); 
    } 

이 버튼의 .xml은입니다.

 <TextSwitcher 
    android:id="@+id/eng_val" 
    android:visibility="visible" 
    android:paddingTop="9px" 
    android:paddingLeft="50px" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/build" 
    android:layout_toRightOf="@+id/engeq" 
    android:textColor="#DD00ff00" 
    android:textSize="24sp"/>  

그렇지 않은 경우 나타나는 비교 레이아웃 내에 있습니다. 확인을 누릅니다. 뷰로 TextView를 문자열로 설정된 숫자로 설정했는데 숫자가 표시되었지만 숫자 필드로 텍스트를 업데이트하는 방법을 알 수 없었습니다. 그게 내 진짜 문제일지도 몰라.

나는 일반적으로 dev에서 참조 된 많은 예제를 거쳤습니다. 사이트 (UI, 일반적인 작업, 다양한 샘플)를 볼 수 있습니다. 여기에도 연결이 표시되지 않습니다 ...

다시 말해서 변수에 응답하여 뷰에 대한 업데이트를 시도하는 것입니다.

그럼, 도움이 될만한 사람을위한 몇 가지 질문입니다.

1) 더 쉬운 방법이 있습니까 (예 : 숫자 값을 View로 전송)? 2) 내 TextSwitcher에 숫자가 표시되지 않는 이유는 무엇입니까? 3) 여기에서 TextSwitcher를 사용해야합니까? 4) 이것의 예는 무엇입니까?

업데이트 !!! : 피드백이있는 버튼이 작동 중입니다. 피드백, 연구 및 행운을 기반으로 한 나의 수정입니다.

공용 클래스 MYVIEW은 MYAPP이 ViewSwitcher.ViewFactory, View.OnClickListener {

public int engcounter = 1; 
private TextSwitcher mSwitcher; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.my_layout); 
     mSwitcher = (TextSwitcher) findViewById(R.id.eng_val); 
     mSwitcher.setFactory(this); 


    Button engp = (Button) findViewById(R.id.engplus); 
    engp.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view){ 
     engcounter++; 
     updateCounter(); 
     } 
    }); 

    Button engn = (Button) findViewById(R.id.engneg); 
    engn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view){ 
     engcounter--; 
     updateCounter();  
     } 
    }); 

    } 
    private void updateCounter() { 
     mSwitcher.setText(String.valueOf(engcounter)); 
    } 
    public View makeView() { 
     TextView t = new TextView(this); 
     t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
     t.setTextSize(36); 
     return t; 
    } 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

} 

이 중 일부는 순간 (makeView에 예. 중력)에서 불필요한 표시를 구현 확장,하지만 작품! 그리고 다른 것들을하고 싶은 10-20 버튼을 위해 일해야합니다.

키가 청취자의 권리를 얻고 있었고 TextSwitcher의 전체 설정이 어색하기 때문에 ... 여전히 배우기 쉽습니다.

다른 모든 의견은 환영합니다!

업데이트 업데이트 !! 이 또한 찾았습니다. 내가 여기 잘못 가고 있지만 정확히 확인하려면 코드를 더 볼 필요가

http://developer.android.com/resources/articles/ui-1.6.html

답변

2

onCreate() 메서드에서 단추의 OnClickListener를 설정해야하므로 TextSwitcher에 숫자가 표시되지 않습니다. 현재 onClick() 메소드가 호출되지 않습니다.

Button plus = (Button) findViewById(R.id.engplus); 
plus.setOnClickListener(this); 
Button neg = (Button) findViewById(R.id.engneg); 
neg.setOnClickListener(this); 

을 그리고 당신의 클래스가이 텍스트 뷰에 당신이 그 일을하는 방법을 숫자 값을 표시 할 수있는 쉬운 방법 인 것으로 지금까지 View.OnClickListener

를 구현해야합니다 :

당신에서 onCreate이 추가 괜찮습니다. setText()에 String을 전달해야하며 숫자를 문자열로 변환하는 방법이 좋습니다.

+0

흠 ... 감사. 무슨 뜻인지 알 겠어. 나는 그것들을 내 견해에 추가했고 지금은 충돌 (전에 아무것도하지 않았지만, 나는 버튼을 클릭 할 수 있었다) ... 계속 그것을 볼 것이다 ... –

+0

명확히하기 위해, 나는이 두 가지 중 하나를 클릭 할 때만 충돌한다. 버튼. 그렇지 않은 경우 다른 버튼과보기는 정상입니다. –

+0

LogCat 출력에 Stacktrace가 있어야 충돌 이유를 알 수 있습니다. 당신이 그것을 이해할 수 없다면 여기에 게시하십시오. –

-2

android developer site에서 API 데모입니다. 내 생각 엔 ViewSwitcher ViewFactory 및 View OnClickListener를 구현해야한다는 것입니다. 클릭하면 표시되지만 수정 자와 일치하지 않으며 코드에보기 모드가 표시되지 않습니다.


public class TextSwitcher1 extends Activity implements ViewSwitcher.ViewFactory, 
     View.OnClickListener { 

    private TextSwitcher mSwitcher; 

    private int mCounter = 0; 

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

     setContentView(R.layout.text_switcher_1); 

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

     Animation in = AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_in); 
     Animation out = AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_out); 
     mSwitcher.setInAnimation(in); 
     mSwitcher.setOutAnimation(out); 

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

     updateCounter(); 
    } 

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

예, 부분적으로는 애니메이션이 필요없고,보기 당 10-20 개의 버튼을 처리하는 스위치가 있습니다. Onclicklistner가 갈 길을 나타냅니다, 공장 도움이되지 않습니다 ....하지만 여전히 작동하지 않습니다 ... (위의 내 응답 참조) –

관련 문제