为什么我的应用没有投放?

时间:2016-04-26 03:46:14

标签: android

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);
}

}

我不知道为什么我的应用程序没有运行,我正在做一个关于android手势的教程,基本上应用程序应该做的是用户输入的手势,它的名称显示在文本框中(buckysmessage) )。每次我将它加载到我的模拟器上并执行一个手势时,应用程序就会崩溃。如果任何人都可以通过我的代码并帮助我,这将是非常出色的。

2 个答案:

答案 0 :(得分:1)

在使用布局中的视图之前先设置布局 -

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);

}

答案 1 :(得分:0)

我们应该在从布局获取对象之前添加setContentView(),问题是当你尝试做一些动作时你的手势方法会调用,而你试图在textview中显示消息,但是你的textview为null

@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);

}