============问题描述============
今天学习Intent时遇到一个问题很是疑惑,问题描述:
先看效果图:
店家按钮会用Intent来启动并传递一个参数"guanguan"给另外一个Activity,启动模式都是采用的默认的standard,界面简单,两个界面的控制代码如下:
mainFrame:
public class MainActivity extends Activity { String Tag="MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v(Tag, "mainOnCreate"); Button bt=(Button)findViewById(R.id.button1); bt.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent=new Intent(getApplicationContext(),TwoActivity.class); intent.putExtra("name", "guanguan"); startActivity(intent); } }); //bt.setOnClickListener(l); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void onResume() { super.onResume(); Log.v(Tag, "mainOnResume"); } public void onPause() { super.onPause(); Log.v(Tag, "mainOnPause"); } public void onStop() { super.onStop(); Log.v(Tag, "mainOnstop"); } public void onDestory() { super.onDestroy(); Log.v(Tag, "mainonDestory"); } public void onRestart() { super.onRestart(); Log.v(Tag, "mainonRestart"); } }
另外一个Avtivity代码
public class TwoActivity extends Activity{ String Tag="MainActivity"; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.two_activity); Log.v(Tag, "TwoOnCreate"); TextView textview=(TextView)findViewById(R.id.textView2); Intent intent=getIntent(); String name=(String) intent.getCharSequenceExtra("name"); textview.setText("欢迎你"+name); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } public void onResume() { super.onResume(); Log.v(Tag, "twoOnresume"); } public void onPause() { super.onPause(); Log.v(Tag, "twoOnPause"); } public void onStop() { super.onStop(); Log.v(Tag, "twoOnstop"); } public void onDestory() { super.onDestroy(); Log.v(Tag, "twoonDestory"); } public void onRestart() { super.onRestart(); Log.v(Tag, "twoonRestart"); } }
问题:
第一次点击button时参数传过去了。之后,我点击返回键,回到mainFrame,再次点击,回到桌面。我再次启动这个程序,奇怪的是现在直接进入第二个界面,并且参数的值为null了!!!!这是Activity启动模式的问题吗??我查看了日志信息,可惜依然不知道怎么解释,希望大家解答!!小弟初学,还望海涵!
============解决方案1============
可能你在AndroidManifest.xml中把TwoActivity设置为Launcher了。
============解决方案2============
删掉TwoActivity下的
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
时间: 2024-10-15 11:06:51