前提・実現したいこと
プログラミング初心者です。
AndroidStudioを使ってアプリ開発をしています。
ボタンを押すとスマホのギャラリーから選択した画像と入力した名前がpreferenceに保存されるようにしようとしています。
保存した画像と名前はリストビューに表示されるようにしたいです。
発生している問題・エラーメッセージ
保存ボタンを押すと「繰り返し停止しています」とでる。
出てくるエラー
1675-1731/? E/storaged: getDiskStats failed with result NOT_SUPPORTED and size 0
3996-3996/? E/libc: Access denied finding property "ro.serialno"
30951-5609/? E/memtrack: Couldn't load memtrack module
1537-4403/? E/WVCdm: [metrics_collections.cpp(280):Serialize] Serializing session metrics. Session Count: 0
[metrics_collections.cpp(280):Serialize] Serializing session metrics. Session Count: 1
該当のソースコード
*****************画像と名前を登録するクラス***************** public class Kaoadd extends AppCompatActivity{ private static final int REQUEST_GALLERY = 0; private ImageView imageView; private EditText editText; private Bitmap bmp; private SharedPreferences preferences; private String bitmapStr; private String name; private Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_kaoadd); editText = findViewById(R.id.editText); imageView = findViewById(R.id.image_view); Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, REQUEST_GALLERY); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_GALLERY && resultCode == RESULT_OK) { try { InputStream in = getContentResolver().openInputStream(data.getData()); bmp = BitmapFactory.decodeStream(in); in.close(); // 選択した画像を表示 imageView.setImageBitmap(bmp); } catch (Exception e) { } } } public void onButton2(View v) { editText = (EditText) findViewById(R.id.editText2); name = editText.getText().toString(); //保存したいBitmap ByteArrayOutputStream boas = new ByteArrayOutputStream(); bmi.compress(Bitmap.CompressFormat.PNG,100,boas); bitmapStr = Base64.encodeToString(boas.toByteArray(),Base64.DEFAULT); preferences = getSharedPreferences("Gazo",MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("name",name); editor.putString("gazou",bitmapStr); editor.commit(); Toast toast = Toast.makeText(this, "保存しました", Toast.LENGTH_LONG); toast.show(); } } *****************preferenceを読み込むクラス*************************** public class Tsuika extends AppCompatActivity { ArrayList kao; private SharedPreferences preferences; private ListView listView; private ListAdapter adapter; private String name; private String s; private Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tsuika); preferences = getSharedPreferences("Gazo", MODE_PRIVATE); name = preferences.getString("name", ""); s = preferences.getString("gazou",""); if (!s.equals("")) { BitmapFactory.Options options = new BitmapFactory.Options(); byte[] b = Base64.decode(s, Base64.DEFAULT); bitmap = BitmapFactory.decodeByteArray(b, 0, b.length).copy(Bitmap.Config.ARGB_8888, true); } if (!s.equals("")) { ArrayList<ListRow> listItems = new ArrayList<>(); for (int i = 0; i < 3; i++) { ListRow item = new ListRow(bitmap, name); listItems.add(item); // MyAdapterを作成し、データを設定 MyAdapter adapter = new MyAdapter(this, R.layout.list_layout, listItems); // ListViewにArrayAdapterを関連付け、データの表示を行う ListView listView = (ListView) findViewById(R.id.listView); listView.setAdapter(adapter); } } } **********ListRow******************************** import android.graphics.Bitmap; public class ListRow { private Bitmap mThumbnail = null; private String mTitle; public ListRow(Bitmap thumbnail, String title) { this.mThumbnail = thumbnail; this.mTitle = title; } public String getTitle(){ return mTitle; } public void setTitle(String name){ this.mTitle = name; } public Bitmap getThumbnail(){ return mThumbnail; } public void setThumbnail(Bitmap thumbnail){ this.mThumbnail = thumbnail; } }
試したこと
日本語のサイトは全部見ましたがいまいちわからなかったです。。。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー