2013-08-27 3 views
0

토글 버튼이있는 Android 앱을 작성했지만 토글 버튼이 처음에는 제대로 작동하지 않습니다. 하지만 선택을 취소 한 후에 다시 시도하면 올바르게 작동합니다.Android에서 토글 버튼이 처음으로 작동하지 않습니다.

아래 코드에 나와 있습니다.

처음 활성화하려면 어떤 코드를 추가해야합니까? .XML 파일에

public class MainActivity extends Activity{ 

private ToggleButton togg; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    togg = (ToggleButton) findViewById(R.id.toggleButton1); 
    } 
public void nameOfMethod(View v){ 

    togg.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (togg.isChecked()) { 
       //Toast.makeText(MainActivity.this, "Servise bağlanılıyor...", Toast.LENGTH_SHORT).show(); 
       new Thread(new ClientThread()).start(); 
      } else { 
       Toast.makeText(MainActivity.this, "Bağlantı sonlandırılıyor...", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

는 :

<ToggleButton 
    android:id="@+id/toggleButton1" 
    android:layout_width="120dp" 
    android:layout_height="60dp" 
    android:layout_below="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="20dp" 
    android:onClick="nameOfMethod" 
    android:textOn="Bağlantıyı bitir" 
    android:textOff="Bağlantıyı başlat" /> 

편집 : 그것은 그렇게 잘 작동합니다 :

에서 onCreate (번들 savedInstanceState)에 setOnClickListener 방법을 이동 안드로이드 삭제와
public class MainActivity extends Activity{ 

private ToggleButton togg; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    togg = (ToggleButton) findViewById(R.id.toggleButton1); 

    togg.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (togg.isChecked()) { 
       //Toast.makeText(MainActivity.this, "Servise bağlanılıyor...", Toast.LENGTH_SHORT).show(); 
       new Thread(new ClientThread()).start(); 
      } else { 
       Toast.makeText(MainActivity.this, "Bağlantı sonlandırılıyor...", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

:의 OnClick xml 파일의 메소드 ...

답변

0

xm의 토글 버튼에 대해 확인 된 상태를 설정해야합니다 나 또는 귀하의 코드에서.

XML을

android:checked="true" 

코드 :

togg = (ToggleButton) findViewById(R.id.toggleButton1); 
togg.setChecked(true); 

그렇지 않으면, 당신은 대신에 OnClickListener를의

togg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     // TODO 
    } 
}); 

()을 사용할 수 있습니다.

여전히 OnClickListener를 사용하고 싶다면 nameOfMethod에 넣지 말고 onCreate로 저장하는 것이 좋습니다. 그것을에서 onCreate 말하면

를 (또는에서 onCreate에 nameOfMethod를 호출 기억) :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    togg = (ToggleButton) findViewById(R.id.toggleButton1); 
    togg.setChecked(false); 
    togg.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     ... 
     } 
    }); 
} 
+0

의 상태에 따라 조건을 설정합니다. 나는 당신이 잘못을 이해했다고 생각합니다 ... – user2670532

+0

토글 버튼은 체크/체크하지 않은 상태로 전환 할 수있는 버튼입니까? 먼저 체크를하지 않기를 원한다는 뜻입니까? 그럼 그냥 setChecked (false)? – lindatseng

0

음이 토글 버튼이 동작을 설명 처음, 선택 후에는 클릭 리스너를 설정하는 것으로 보인다 점점.

리스너를 nameOfMethod() 외부로 설정하려면 코드를 움직여야합니다.

EDIT : 죄송합니다. 명확하지 않은 경우 nameOfMethod()에서 setOnClickListener 메서드를 제거하면됩니다. nameOfMethod()는 토글 버튼이 선택 될 때마다 호출되는 것이므로 실제로 터치 할 때마다 청취자를 설정하는 것은 의미가 없으므로 이러한 비정상적인 동작이 발생합니다.

대신, nameOfMethod()에, 바로 가서 내가 확인 버튼을 원하지 않는 ToggleButton을

if(toggleButton.isSelected()){ 

    .......... 

{ 

else 

....... 
+0

"이동"으로 정확히 무엇을 의미 했습니까? 올바른 순서로 exapmle을 표시 할 수 있습니까? – user2670532

+0

내 수정 된 게시물을 참조하십시오. –

관련 문제