我正在嘗試使用這樣的 switch 語句開始活動:public class MainActivity extends AppCompatActivity { public static String key = "1010"; private Bitmap bitmap = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { this.getMenuInflater().inflate(R.menu.items, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.add: //working break; case R.id.rotate_right: //working break; case R.id.fullscreen: //not working Intent intent = new Intent(getBaseContext(), fullScreenActivity.class); intent.putExtra(key, bitmap); startActivity(intent); break; } }}這就是下一個活動的代碼public class fullScreenActivity extends AppCompatActivity { Bitmap bitmap = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_full_screen); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); Intent starter = getIntent(); bitmap = starter.getParcelableExtra(MainActivity.key); }}我還在清單中添加了第二個活動:<activity android:name=".fullScreenActivity" android:screenOrientation="landscape"></activity>這是 R.menu.items:<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"><item android:id="@+id/add" android:icon="@drawable/ic_add_black_24dp" android:title="@string/add_item" app:showAsAction="ifRoom" />它什么也沒做,那可能是什么問題?請注意,只有全屏項目不起作用,所以我認為問題出在 startActivity 代碼中。
2 回答

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
我認為問題是這條線
intent.putExtra(key, bitmap);
Android 限制了 Intent 數據的大小。有2個案例
該應用程序將崩潰
RuntimeException
,您可以在 logcat 中輕松看到此異常,如下圖所示
該應用程序不會崩潰,但什么也不顯示并返回主屏幕(您的情況)。實際上有一個關于這個問題的警告,要查看警告,您必須將 logcat 類型更改為Warn并將 logcat 過濾器更改為No Filters,如下圖所示。
如您所見,812104
就我而言,警告可能與您的情況不同。
android.os.TransactionTooLargeException: data parcel size 812104 bytes
解決方案:如果您需要將位圖從一個活動傳遞到另一個活動
如果位圖是 URL(文件路徑、http/https 鏈接等)或資源 id(R.drawable.splash_screen 等),則只需將 URL 或資源 id 傳遞給另一個活動。
如果位圖來自用戶的操作(例如從相機捕獲),那么您可以將位圖保存在本地文件中,然后將文件路徑傳遞給另一個活動。
希望這可以幫助!

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
如果您使用自定義工具欄來膨脹菜單,請設置工具欄:-
setSupportActionBar(toolbar);
然后菜單正確膨脹, 否則問題不是這個。
添加回答
舉報
0/150
提交
取消