У меня есть toggleButton, что я хочу установить onTouchListener. Однако я получаю некоторые ошибки, поэтому не думаю, что я делаю это правильно.как реализовать onTouchListener?
Я объявил свою кнопку.
private ToggleButton pushBtn;
Я установил свою активность для реализации View.onTouchListener.
public class InCallActivity extends SherlockFragmentActivity implements View.OnTouchListener {
В OnCreate я написал:
pushBtn = (ToggleButton) findViewById(R.id.PTT_button3);
pushBtn.setOnTouchListener(this);
Затем я попытался использовать слушателя в классе ::
pushBtn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event)
{
// if more than one call, change this code
int callId = 0;
for (SipCallSession callInfo : callsInfo)
{
callId = callInfo.getCallId();
Log.e(TAG, "" + callInfo.getCallId());
}
final int id = callId;
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
// press
pushBtn.setBackgroundResource(R.drawable.btn_blue_glossy);
pushBtn.setChecked(true);
OnDtmf(id, 17, 10);
OnDtmf(id, 16, 9);
return true;
}
case MotionEvent.ACTION_UP:
{
// release
pushBtn.setBackgroundResource(R.drawable.btn_lightblue_glossy);
pushBtn.setChecked(false);
OnDtmf(id, 18, 11);
OnDtmf(id, 18, 11);
return true;
}
default:
return false;
}
}
});
У меня есть несколько ошибок, он говорит onTouch
не но я сделал это? Также я поместил слушатель в классе, и теперь он жалуется на методе перед ним, говоря:
Syntax error on token "}", delete this token
Но это было прекрасно, пока я не добавил слушателя, делает слушатель должен быть в методе или что-то?
В конце моего слушателя я получаю ошибку:
Syntax error, insert "}" to complete MethodBody
Но я теперь знаю почему.
EDIT UPDATE
Вот мой OnCreate, я получаю nullpointerexception
:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//handler.setActivityInstance(this);
Log.d(THIS_FILE, "Create in call");
setContentView(R.layout.in_call_main);
SipCallSession initialSession = getIntent().getParcelableExtra(SipManager.EXTRA_CALL_INFO);
synchronized (callMutex) {
callsInfo = new SipCallSession[1];
callsInfo[0] = initialSession;
}
bindService(new Intent(this, SipService.class), connection, Context.BIND_AUTO_CREATE);
prefsWrapper = new PreferencesProviderWrapper(this);
// Log.d(THIS_FILE, "Creating call handler for " +
// callInfo.getCallId()+" state "+callInfo.getRemoteContact());
powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE,
"com.csipsimple.onIncomingCall");
wakeLock.setReferenceCounted(false);
takeKeyEvents(true);
// Cache findViews
mainFrame = (ViewGroup) findViewById(R.id.mainFrame);
inCallControls = (InCallControls) findViewById(R.id.inCallControls);
inCallAnswerControls = (InCallAnswerControls) findViewById(R.id.inCallAnswerControls);
activeCallsGrid = (InCallInfoGrid) findViewById(R.id.activeCallsGrid);
heldCallsGrid = (InCallInfoGrid) findViewById(R.id.heldCallsGrid);
pushBtn = (ToggleButton) findViewById(R.id.PTT_button3);
//pushBtn.setOnTouchListener((OnTouchListener) this);
attachVideoPreview();
inCallControls.setOnTriggerListener(this);
inCallAnswerControls.setOnTriggerListener(this);
if(activeCallsAdapter == null) {
activeCallsAdapter = new CallsAdapter(true);
}
activeCallsGrid.setAdapter(activeCallsAdapter);
if(heldCallsAdapter == null) {
heldCallsAdapter = new CallsAdapter(false);
}
heldCallsGrid.setAdapter(heldCallsAdapter);
ScreenLocker lockOverlay = (ScreenLocker) findViewById(R.id.lockerOverlay);
lockOverlay.setActivity(this);
lockOverlay.setOnLeftRightListener(this);
/*
middleAddCall = (Button) findViewById(R.id.add_call_button);
middleAddCall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
onTrigger(ADD_CALL, null);
}
});
if (!prefsWrapper.getPreferenceBooleanValue(SipConfigManager.SUPPORT_MULTIPLE_CALLS)) {
middleAddCall.setEnabled(false);
middleAddCall.setText(R.string.not_configured_multiple_calls);
}
*/
// Listen to media & sip events to update the UI
registerReceiver(callStateReceiver, new IntentFilter(SipManager.ACTION_SIP_CALL_CHANGED));
registerReceiver(callStateReceiver, new IntentFilter(SipManager.ACTION_SIP_MEDIA_CHANGED));
registerReceiver(callStateReceiver, new IntentFilter(SipManager.ACTION_ZRTP_SHOW_SAS));
proximityManager = new CallProximityManager(this, this, lockOverlay);
keyguardManager = KeyguardWrapper.getKeyguardManager(this);
dialFeedback = new DialingFeedback(this, true);
if (prefsWrapper.getPreferenceBooleanValue(SipConfigManager.PREVENT_SCREEN_ROTATION)) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
if (quitTimer == null) {
quitTimer = new Timer("Quit-timer");
}
useAutoDetectSpeaker = prefsWrapper.getPreferenceBooleanValue(SipConfigManager.AUTO_DETECT_SPEAKER);
applyTheme();
proximityManager.startTracking();
inCallControls.setCallState(initialSession);
inCallAnswerControls.setCallState(initialSession);
pushBtn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//if more than one call, change this code
int callId = 0;
for (SipCallSession callInfo : callsInfo) {
callId = callInfo.getCallId();
Log.e(TAG, ""+callInfo.getCallId());
}
final int id= callId;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
//press
pushBtn.setBackgroundResource(R.drawable.btn_blue_glossy);
pushBtn.setChecked(true);
OnDtmf(id, 17, 10);
OnDtmf(id, 16, 9);
return true;
}
case MotionEvent.ACTION_UP: {
//release
pushBtn.setBackgroundResource(R.drawable.btn_lightblue_glossy);
pushBtn.setChecked(false);
OnDtmf(id, 18, 11);
OnDtmf(id, 18, 11);
return true;
}
default:
return false;
}
}
});
}
Линия с NullPointer 250 pushBtn.setOnTouchListener(new OnTouchListener() {
, потому что есть недостающий '}' вы не закрываете метод onTouch –
Я стараюсь это nd все еще есть ошибка, я думал, что скобки считаются правильными уже? – Paul
buddy dont реализует onTouchListner() для вашего класса, поскольку вы привязываете его к самому представлению ...попробуйте удалить инструменты из класса. –