質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

3487閲覧

bitmapをpreferenceで保存して別の画面で使いたい

Saga_Honoka2525

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/09/15 06:44

編集2022/01/12 10:55

前提・実現したいこと

プログラミング初心者です。
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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keicha_hrs

2018/09/15 07:06

JavaとJavaScriptは名前が似ているだけで全くの別物です。Android Studioでの開発言語はJavaですので、タグを張り替えてください。また、AndroidにはLogCatというログ表示の仕組みがあり、Android Studioでそれを閲覧することができます。エラーでアプリが落ちたときには、そこに大量のバックトレースログが出力されているはずです。それによってソースコードの何行目で何のエラーが発生したのかを調べることができます。それを手がかりに調査を試みてみましょう。それでもわからないときは、そのログを提示されるべきでしょう。
Saga_Honoka2525

2018/09/15 07:26

ご指摘ありがとうございます。LogCat試してみます
Saga_Honoka2525

2018/09/15 09:50

ボタンを押した際の「繰り返し停止」はEditTextのidが間違っていただけでデータの保存はできました。しかし受け取り側の画面の方で落ちてしまいます。受け取った画像データをもとにサムネイル付きのlistを表示させたいのですが、ListRow item = new ListRow(bitmap, name);書き方はこれで合っているのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問