如何將活動中的對象傳遞給android上的非活動類?我試圖使用該類的一個實例,但是當我使用一個對象(來自該類)時,我得到了NullPointerException
。將活動中的對象傳遞給非活動類
任何人都可以幫助我嗎?
在此先感謝。
這裏是我的代碼:
public class IncercLaPauseActivity extends Activity {
RelativeLayout layout;
TextView index;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (RelativeLayout) findViewById(R.id.imagBackground);
index = (TextView) findViewById(R.id.index);
}
}
XML文件是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/photo0"
android:id="@+id/imagBackground">
<TextView android:layout_width="20dip" android:layout_height="20dip"
android:layout_marginLeft="250dip" android:layout_marginTop="15dip"
android:background="#FFFFFF" android:id="@+id/index" android:text="0"
android:textColor="#000000">
</TextView>
<com.www.MyImageView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:id="@+id/myimage"
android:layout_below="@id/index">
</com.www.MyImageView>
</RelativeLayout>
和非活性類我做這樣的事情:
public class MyImageView extends ImageView {
Paint rectanglePaint;
int x, y,i=0;
Rect tete, yeux, dos, abdomen, epaule1, epaule2, avant_bras1, avant_bras2,
main1, main2, genoux, pieds, respiration;
Bitmap bit;
IncercLaPauseActivity obj;
private int[] photos = { R.drawable.photo0, R.drawable.photo1,
R.drawable.photo2, R.drawable.photo3, R.drawable.photo4,
R.drawable.photo5, R.drawable.photo6, R.drawable.photo7,
R.drawable.photo8, R.drawable.photo9, R.drawable.photo10,
R.drawable.photo11, R.drawable.photo12, R.drawable.photo13,
R.drawable.photo14, R.drawable.photo15, R.drawable.photo16,
R.drawable.photo17, R.drawable.photo18, R.drawable.photo19,
R.drawable.photo20, R.drawable.photo21, R.drawable.photo22 };
public MyImageView(Context context) {
super(context);
}
public MyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
rectanglePaint = new Paint();
rectanglePaint.setARGB(120, 255, 0, 0);
tete = new Rect(220, 0, 280, 67);// in pixels
yeux = new Rect(220, 4, 280, 20);
epaule1 = new Rect(175, 75, 200, 197);
epaule2 = new Rect(297, 75, 320, 197);
avant_bras1 = new Rect(170, 200, 195, 300);// in pixels
avant_bras2 = new Rect(300, 200, 325, 300);// in pixels
main1 = new Rect(170, 303, 195, 345);
main2 = new Rect(300, 303, 325, 345);
respiration = new Rect(200, 75, 297, 177);
abdomen = new Rect(202, 177, 290, 260);
genoux = new Rect(200, 260, 297, 430);
bit = BitmapFactory.decodeResource(getResources(),
R.drawable.anim_ctrl_panel);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
System.out.println("draw");
canvas.drawRect(tete, rectanglePaint);
canvas.drawRect(epaule1, rectanglePaint);
canvas.drawRect(epaule2, rectanglePaint);
rectanglePaint.setARGB(120, 0, 255, 0);
canvas.drawRect(avant_bras1, rectanglePaint);
canvas.drawRect(avant_bras2, rectanglePaint);
rectanglePaint.setARGB(120, 0, 0, 255);
canvas.drawRect(main1, rectanglePaint);
canvas.drawRect(main2, rectanglePaint);
rectanglePaint.setARGB(120, 0, 255, 255);
canvas.drawRect(respiration, rectanglePaint);
rectanglePaint.setARGB(120, 255, 0, 255);
canvas.drawRect(abdomen, rectanglePaint);
canvas.drawRect(yeux, rectanglePaint);
rectanglePaint.setARGB(120, 255, 255, 0);
canvas.drawRect(genoux, rectanglePaint);
canvas.drawBitmap(bit, 80, 410, null);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
x = (int) event.getX();
System.out.println("x este " + x);
y = (int) event.getY();
System.out.println("y este " + y);
if (avant_bras1.contains(x, y) || (avant_bras2.contains(x, y))) {
System.out.println("antebrat");
Intent intent = new Intent();
intent.setClass(this.getContext(), Selecter.class);
this.getContext().startActivity(intent);
}
if (event.getX() > bit.getWidth()/2) {
System.out.println("right");
i++;
System.out.println("i=" + i);
if (i <= 22) {
obj.layout.setBackgroundResource(photos[i]);
obj.index.setText(String.valueOf(i));
} else {
i = 0;
obj.layout.setBackgroundResource(photos[i]);
obj.index.setText(String.valueOf(i));
}
}else {
i--;
System.out.println("i=" + i);
if (i >= 0) {
obj.layout.setBackgroundResource(photos[i]);
obj.index.setText(String.valueOf(i));
} else {
i = 22;
obj.layout.setBackgroundResource(photos[i]);
obj.index.setText(String.valueOf(i));
}
}
System.out.println("left");
return false;
}
}
,我得到這個錯誤:
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): java.lang.NullPointerException
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): at com.www.MyImageView.onTouchEvent(MyImageView.java:112)
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): at android.view.View.dispatchTouchEvent(View.java:3709)
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:822)
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:822)
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:822)
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:822)
10-21 17:34:42.825: ERROR/AndroidRuntime(2011): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
其中line 112
是第一線obj.layout.setBackgroundResource(photos[i]);
請發表您的代碼是導致空指針,以發生,這會幫助你更快地得到答案。 – Bobbake4
你應該把它傳遞給你的第二類的構造函數,並確保你有對象的實例。添加你的代碼,以便我們可以幫助你解決它:) – Houcine
同意上面的評論 - 發佈更多的代碼,並明確你想要做什麼,這樣我們可以最好地幫助你。 –