Android(API 14〜16を対象とする)では、MainActivityとがありNextActivityます。メソッドが:のブロック内で呼び出された場合、インテントを使用して内部から開始することは困難ではありませんNextActivity。MainActivitygetIntent()onCreate()NextActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int data = 7;
...
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("data", data);
startActivity(intent);
}
}
public class NextActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final int data = this.getIntent().getIntExtra("data", 7);
...
}
...
}
ただし、このフィールドdataはの匿名(「内部」)クラス内で使用されているためNextActivity、宣言する必要がありfinalます。
フィールドを宣言したくないfinalので、クラスの最初、開始前に宣言すれば、通常は宣言しないようにできonCreate()ます。ただし、何らかの理由で、ステートメントが(キーワードなしで)の外に表示さNextActivityれると、起動時にアプリがクラッシュします。getIntent()finalonCreate()
なぜですか?