最初のActivity:EnglishWorldsActivity

7969 ワード

 1 package Workshop.english.englishwords;
2
3 import android.app.Activity;
4 import android.content.Intent;
5 import android.os.Bundle;
6 import android.view.MotionEvent;
7 import android.view.View;
8 import android.view.View.OnTouchListener;
9 import android.widget.ImageView;
10
11 public class EnglishWordsActivity extends Activity {
12 /** Called when the activity is first created. */
13 @Override
14 public void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.main);
17
18 img_v = (ImageView)findViewById(R.id.mainImageView);
19 img_v.setOnTouchListener(new OnTouchListener() {
20 public boolean onTouch(View view, MotionEvent event) {
21 Intent intent = new Intent(EnglishWordsActivity.this, UnitListAdapter.class);
22
23 startActivity(intent);
24
25 return true;
26 }
27 });
28 }
29
30 private ImageView img_v;
31 }

前にAndroidManifestと言いました.xmlは、入口のActivityがEnglishWordsActivityであることを見て、クラスの名前が取れるかどうか(足りないと思います)はともかく、クラスそのものです.
line 11は、このクラスがActivityクラスを継承していることを説明し、Activityクラスの紹介については、公式サイトを参照することができます.
line 13、overrideの最初のアルファベットは大文字でなければならないことに注意してください.もちろん、多くの場合、これは自動的に生成されます.
line 14,onCreateメソッドは,Activity作成が呼び出しのメソッドである.この点は,C++におけるコンストラクタの意味に少し似ている.ActivityにはonCreateの方法のほか、onStop、onDestroy、onResumeなどの方法がありますが、ここではリロードする必要がないので列挙されていません.
line 15,superを呼び出すonCreateメソッド,superは親でもActivity.
line 16,setContentView()この関数はres/layoutディレクトリの下のmainを持つ.xmlファイル記述のコントロール、例えば私のところにLinearLayoutとImageViewがViewを埋めているが、本質的にはMFCフレームワークの下のウィンドウが初期化されているという意味だ.さらに詳しくは、ウィンドウとウィンドウのコントロールを初期化します.コントロールのプロパティはmainです.xmlに説明があります.申し訳ありませんが、Windows MFCの概念を多く使っています.MFCの概念は理解しやすいからです.次はmainです.xml. これらのコントロールの属性については、一つ一つ説明することはできませんが、公式サイトのreferrenceを参照してください.指摘したいのは、ImageViewのid、つまりline 9のmainImageViewがプログラムで参照できることです.彼はこのIamgeViewのIDです.参照の方法はR.id.mainIamgeViewであり、上のJavaプログラムではline 18が使用している.プログラムではこのidでコントロールを得ることができ、プログラムではこのコントロールを使うことができ、属性を読み取ることも、属性を修正することも、他の操作もできます.xml記述とプログラムのつながりを確立しました.もう1つ説明する必要があるのはsrc属性で、この属性はこのピクチャソースを示しており、ここで、このピクチャはhelloである.prgファイル.res/drawableディレクトリの下にあります.
 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="wrap_content"
4 android:layout_height="fill_parent"
5 android:gravity="center"
6 android:orientation="vertical" >
7
8 <ImageView
9 android:id="@+id/mainImageView"
10 android:layout_width="316dp"
11 android:layout_height="wrap_content"
12 android:layout_weight="0.72"
13 android:scaleType="fitXY"
14 android:src="@drawable/hello" />
15
16 </LinearLaout>

やはりJavaプログラムに戻って、さっきライン18がfindViewByIdでこのIamgeViewを手に入れたと言いました
line 19は、このコントロールにonTouchのイベントを定義し、イベントにおいてonTouchの方法を実現し、Touchイベントが発生した後、どのような操作を行うかを示す.
line 21および23は、このイメージがTouchするときに、次のActivityが2番目のパラメータであることを明示的に示すIntentを作成することを説明する.
最初のパラメータは、現在のActivityによってトリガーされたstartを説明します.
onTouchメソッドはブールタイプを返し、そうでなければコンパイルエラーが発生することに注意してください.
 
このコードを初めて書いたとき、私はimg_vはプライベート変数として定義されていますが、エラーが発生し、crashが適用されます.
次は私がこのcrashを解決する過程で、間もなく共有します.