In Android (targeting APIs 14-16) I have a MainActivity
and a NextActivity
. There is no difficulty using intents to start NextActivity
from within MainActivity
if the getIntent()
method is called inside the onCreate()
block of 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);
...
}
...
}
However, since the field data
is being used inside an anonymous ("inner") class in NextActivity
, I am compelled to declare it final
.
I'd prefer not to declare fields final
, and I can usually avoid doing so if I declare them at the beginning of the class, before onCreate()
begins. But for some reason, the app crashes when NextActivity
starts if the getIntent()
statement appears (without the final
keyword) outside of onCreate()
.
Any idea why?
You can't
getIntent()
beforeonCreate()
-- there's simply noIntent
available at that point. I believe the same is true for anything that requires aContext
.Your anonymous inner class can still call
getIntent()
, however, so you don't need to declare this as a variable at all.According to your question what i understand is u don't want to declare data as final in next activity..Then y cant u try for this./
Try this...