我正在使用Android中的View Flipper。编译时没有显示任何错误。但是一旦应用程序在我的移动设备中启动,它就会崩溃。因为我是Android的初学者,并且没有足够的知识。
报告错误显示调用viewFlipper.getDisplayChild()
的空指针异常
主要的java文件代码是
package com.example.joshiyogesh.classapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.ViewFlipper;
public class MainActivity extends Activity {
public ViewFlipper viewFlipper;
public float lastX;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewFlipper = (ViewFlipper)findViewById(R.id.view_flipper);
}
public boolean onTouchEvent(MotionEvent touchEvent){
switch (touchEvent.getAction()){
case MotionEvent.ACTION_DOWN:
{
lastX = touchEvent.getX();
break;
}
case MotionEvent.ACTION_UP:
{
float currentX = touchEvent.getX();
if (lastX<currentX){
if(viewFlipper.getDisplayedChild() == 0)
break;
viewFlipper.setInAnimation(this,R.anim.in_from_left);
viewFlipper.setOutAnimation(this,R.anim.out_from_right);
//show next Screen
viewFlipper.showNext();
}
if(lastX>currentX){
if(viewFlipper.getDisplayedChild()==1)
break;
viewFlipper.setInAnimation(this,R.anim.in_from_right);
viewFlipper.setOutAnimation(this,R.anim.out_from_left);
viewFlipper.showPrevious();
}
break;
}
}
return false;
}
}
ViewFlipper的文件代码是
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewFlipper
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/view_flipper"
android:layout_margin="6dip">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
>
<ImageView
android:layout_width="450dp"
android:layout_height="450dp"
android:layout_marginTop="15dp"
android:id="@+id/image_view1"
android:src="@drawable/images"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
>
<ImageView
android:layout_width="450dp"
android:layout_height="450dp"
android:layout_marginTop="15dp"
android:id="@+id/image_view2"
android:src="@drawable/large"/>
</LinearLayout>
</ViewFlipper>
</LinearLayout>
任何帮助都会感激不尽。谢谢。
答案 0 :(得分:0)
当使用onTouchEvent时,如果没有其他函数首先调用它(ontouch listener onclick listener),活动将直接发送给它,你有两个选项
选项1
在使用
之前检查viewFlipper是否为null选项2 在findviewbyid到flipper之后使用ontouchlistener oncreate
viewFlipper.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
// Do what you want
return true;
}
return false;
}
});