こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

android javaについて質問です

android javaについて質問です

public class MailMotion extends Activity implements OnTouchListener, OnClickListener {

private FrameLayout frameLayout01;
private ImageView target;
private Button trash;

private int targetLocalX;
private int targetLocalY;
private int screenX;
private int screenY;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.motion);
frameLayout01 = (FrameLayout)findViewById(R.id.FrameLayout01);
target = (ImageView)findViewById(R.drawable.toudai);
target.setOnTouchListener(this);
trash = (Button)findViewById(R.id.trash);
trash.setOnClickListener(this);
}
@Override

public boolean onTouch(View v, MotionEvent event) {

int x = (int)event.getRawX();
int y = (int)event.getRawY();

switch(event.getAction()) {

case MotionEvent.ACTION_DOWN:

targetLocalX = target.getLeft();
targetLocalY = target.getTop();

screenX = x;
screenY = y;

break;

case MotionEvent.ACTION_MOVE:

int diffX = screenX - x;
int diffY = screenY - y;

targetLocalX -= diffX;
targetLocalY -= diffY;

target.layout(targetLocalX,
targetLocalY,
targetLocalX + target.getWidth();
targetLocalY + target.getHeight());

screenX = x;
screenY = y;

break;

case MotionEvent.ACTION_UP:

int trashLeft = trash.getLeft() + trash.getWidth()/2;
int trashTop = trash.getTop() + trash.getHeight()/2;
int targetRight = target.getLeft() + target.getWidth();
int targetBottom = target.getTop() + target.getHeight();

if (targetRight > trashLeft && targetBottom > trashTop) {

frameLayout01.removeView(target);
}
break;
}
return true;
}
@Override
public void onClick(View v) {

int childCount = frameLayout01.getChildCount();

if(childCount == 1) {

frameLayout01.addView(target);
}}}
上記のものを起動させると、nullpointが出てきます
前回の質問をもとに、デバッグをしてみたのですが、touchonLisnerのところでエラーが起きました
勉強不足なので原因がよくわかっておりません
間違いを教えていただけないでしょうか?
stringは <drawable name="custom_button">#ffff00</drawable>
で設定して、おそらく大丈夫だと思います

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FrameLayout01"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="10" >
<Button
android:layout_gravity="bottom|right"
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/trash"
android:background="@drawable/custom_button"/>

<ImageView
android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/aaaa"
android:src="@drawable/aaa"
android:layout_gravity="center" />
</FrameLayout>

投稿日時 - 2013-07-09 16:50:36

QNo.8169206

困ってます

質問者が選んだベストアンサー

パッと見た感じ、R.drawable.toudaiがXMLに定義されていません。
> target = (ImageView)findViewById(R.drawable.toudai);
そのため、上記でtagetにはnullが設定されているのではないでしょうか。

XMLの定義と、プログラムの対応箇所について、確認されたほうが良いです。

投稿日時 - 2013-07-09 21:20:22

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問