2016-04-26 8 views
0
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.MotionEvent; 
import android.view.GestureDetector; 
import android.widget.TextView; 
import android.support.v4.view.GestureDetectorCompat; 

public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, 
GestureDetector.OnDoubleTapListener{ 

private TextView buckysmesage; 
private GestureDetectorCompat gestureDetector; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    buckysmesage = (TextView) findViewById(R.id.textView); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    this.gestureDetector = new GestureDetectorCompat(this,this); 
    gestureDetector.setOnDoubleTapListener(this); 
    setContentView(R.layout.activity_main); 
} 

@Override 
    public boolean onDoubleTap(MotionEvent e) { 
    buckysmesage.setText("onDoubleTap"); 

    return true; 
} 

@Override 
public boolean onSingleTapConfirmed(MotionEvent e) { 
    buckysmesage.setText("onSingleTapConfirmed"); 
    return true; 
} 

@Override 
public boolean onDoubleTapEvent(MotionEvent e) { 
    buckysmesage.setText("onDoubleTapEvent"); 
    return true; 
} 

@Override 
public boolean onDown(MotionEvent e) { 
    buckysmesage.setText("onDown"); 
    return true; 
} 

@Override 
public void onShowPress(MotionEvent e) { 
     buckysmesage.setText("OnShowPress"); 
} 

@Override 
public boolean onSingleTapUp(MotionEvent e) { 
    buckysmesage.setText("onSingleTapUp"); 
    return true; 
} 

@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
    buckysmesage.setText("onScroll"); 
    return true; 
} 

@Override 
public void onLongPress(MotionEvent e) { 
    buckysmesage.setText("OnLongPress"); 
} 

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    buckysmesage.setText("ONFLING"); 
    return true; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    this.gestureDetector.onTouchEvent(event); 
    return super.onTouchEvent(event); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

}Почему мое приложение не работает?

Я понятия не имею, почему мое приложение не работает, я делаю учебник по андроид жестов, в основном то, что приложение должно делать то, что когда-либо жест пользователь вводит, имя его отображается в текстовом поле (buckysmessage). Каждый раз, когда я загружаю его в свой эмулятор и выполняю жест, приложение просто падает. Если кто-нибудь может пройти через мой код и помочь мне, это будет абсолютно великолепно.

+1

что такое сообщение об ошибке? –

+0

Просто говорит, что приложение перестает работать, кроме сообщений об ошибках. – hlag

+0

В логарифме говорится: «ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: главное» все, что я нашел, выглядело странно. – hlag

ответ

0

Мы должны добавить setContentView() перед тем, как объект из макета, проблема в том, когда вы попытайтесь выполнить какое-либо действие, которое вызовет ваши методы жестов, и вы попытаетесь показать это сообщение в текстовом виде, но текст вашего текста равен нулю.

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

    setContentView(R.layout.activity_main); 
    buckysmesage = (TextView) findViewById(R.id.textView); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    this.gestureDetector = new GestureDetectorCompat(this,this); 
    gestureDetector.setOnDoubleTapListener(this); 

} 
+0

Спасибо, что сработали! – hlag

1

Установите макет первой перед использованием взглядов в layout-

Добавить setContentView(R.layout.activity_main); сразу после super.onCreate(savedInstanceState);

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    buckysmesage = (TextView) findViewById(R.id.textView); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    this.gestureDetector = new GestureDetectorCompat(this,this); 
    gestureDetector.setOnDoubleTapListener(this); 

} 
+0

Спасибо, что сработали! – hlag

Смежные вопросы