Bonjour ,
j'aimerais créer une vue personnalisé mais étant débutant sous android je ne comprends pas trop comment l'instancier à partir de mon activité main.
Voici mon code dans mon activité main :
Voici mon code dans ma classe vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 package com.example.trajet; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.content.Intent; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button boutonExercice = (Button)findViewById(R.id.exerciceButton); Button boutonQuitter = (Button)findViewById(R.id.quitterButton); boutonExercice.setOnClickListener(this); boutonQuitter.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public void onStart(){ super.onStart(); System.out.println("je me lance start !"); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.exerciceButton: startActivity(new Intent(this, MaVue.class)); break; case R.id.quitterButton: System.exit(0); break; } } }
voici le code dans mon ma_vue.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 package com.example.trajet; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class MaVue extends View { public MaVue ( Context context ) { super ( context ); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); Point pt1 = null; Point pt2 = null; Paint paint = new Paint (); paint.setColor (Color.DKGRAY); paint.setStrokeWidth (2); canvas.drawLine(pt1 .x, pt1 .y, pt2 .x, pt2 .y, paint); } public MaVue(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public MaVue(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent ( event ); } }
Et pour finir voici mon code dans mon manifest.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version ="1.0" encoding ="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width ="fill_parent" android:layout_height ="fill_parent" android:gravity ="center_horizontal|center_vertical" android:orientation ="vertical" > <com.example.trajet android:id ="@+id/mavue" android:layout_height ="fill_parent" android:layout_width ="fill_parent" /> </LinearLayout>
Mon erreur quand j'execute est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.trajet" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MaVue" android:label="@string/exercice_titre" > </activity> </application> </manifest>
Pouvez vous m'aider svp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 11-10 09:25:04.206: I/System.out(631): je me lance start ! 11-10 09:25:06.165: D/dalvikvm(631): newInstance failed: no <init>() 11-10 09:25:06.165: D/AndroidRuntime(631): Shutting down VM 11-10 09:25:06.176: W/dalvikvm(631): threadid=1: thread exiting with uncaught exception (group=0x40014760) 11-10 09:25:06.185: E/AndroidRuntime(631): FATAL EXCEPTION: main 11-10 09:25:06.185: E/AndroidRuntime(631): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.trajet/com.example.trajet.MaVue}: java.lang.InstantiationException: com.example.trajet.MaVue 11-10 09:25:06.185: E/AndroidRuntime(631): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1739) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.app.ActivityThread.access$500(ActivityThread.java:122) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.os.Handler.dispatchMessage(Handler.java:99) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.os.Looper.loop(Looper.java:132) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.app.ActivityThread.main(ActivityThread.java:4123) 11-10 09:25:06.185: E/AndroidRuntime(631): at java.lang.reflect.Method.invokeNative(Native Method) 11-10 09:25:06.185: E/AndroidRuntime(631): at java.lang.reflect.Method.invoke(Method.java:491) 11-10 09:25:06.185: E/AndroidRuntime(631): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 11-10 09:25:06.185: E/AndroidRuntime(631): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 11-10 09:25:06.185: E/AndroidRuntime(631): at dalvik.system.NativeStart.main(Native Method) 11-10 09:25:06.185: E/AndroidRuntime(631): Caused by: java.lang.InstantiationException: com.example.trajet.MaVue 11-10 09:25:06.185: E/AndroidRuntime(631): at java.lang.Class.newInstanceImpl(Native Method) 11-10 09:25:06.185: E/AndroidRuntime(631): at java.lang.Class.newInstance(Class.java:1301) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.app.Instrumentation.newActivity(Instrumentation.java:1022) 11-10 09:25:06.185: E/AndroidRuntime(631): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1730) 11-10 09:25:06.185: E/AndroidRuntime(631): ... 11 more
Partager