Android studio で画像API作成でエラーが出る

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,257

shokoageha

score 9

前提・実現したいこと

ここに質問したいことを詳細に書いてください
下記のエラーがなぜ発生しているのか、どこをかいぜんすればいいのかについて教えていただければ幸いです。

発生している問題・エラーメッセージ

Error:(22, 13) エラー: シンボルを見つけられません
シンボル:   クラス TextView
場所: クラス MainActivity
Error:(27, 25) エラー: パッケージRは存在しません
Error:(29, 21) エラー: シンボルを見つけられません
シンボル:   クラス TextView
場所: クラス MainActivity
Error:(29, 44) エラー: パッケージRは存在しません
Error:(33, 46) エラー: パッケージRは存在しません
Error:(35, 40) エラー: パッケージRは存在しません
Error:(56, 16) エラー: シンボルを見つけられません
シンボル:   変数 Environment
場所: クラス MainActivity
Error:(56, 66) エラー: シンボルを見つけられません
シンボル:   変数 Environment
場所: クラス MainActivity
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.
エラーメッセージ

###該当のソースコード
 ```lang-java  
import android.app.Activity;  
import android.content.Intent;  
import android.graphics.Bitmap;  
import android.graphics.BitmapFactory;  
import android.net.Uri;  
import android.os.ParcelFileDescriptor;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.widget.Button;  
import android.widget.ImageView;  

import java.io.FileDescriptor;  
import java.io.IOException;  

public class MainActivity extends AppCompatActivity {  

private static final int RESULT_PICK_IMAGEFILE = 1001;  
private ImageView imageView;  
private Button button;  
private TextView dcimPath;  

@Override  
protected void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
setContentView(R.layout.activity_main);  

dcimPath = (TextView)findViewById(R.id.text_view);  
// ギャラリーのパスを取得する  
dcimPath.setText("ギャラリーのPath: "+getGalleryPath());  

imageView = (ImageView)findViewById(R.id.image_view);  

button = (Button)findViewById(R.id.button);  
button.setOnClickListener(new View.OnClickListener() {  
@Override  
public void onClick(View v) {  
// ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file browser.  
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);  

// Filter to only show results that can be "opened", such as a  
// file (as opposed to a list of contacts or timezones)  
intent.addCategory(Intent.CATEGORY_OPENABLE);  

// Filter to show only images, using the image MIME data type.  
// it would be "*/*".  
intent.setType("image/*");  

startActivityForResult(intent, RESULT_PICK_IMAGEFILE);  
}  
});  
}  

private String getGalleryPath() {  
return Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_DCIM + "/";  
}  

@Override  
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {  

// The ACTION_OPEN_DOCUMENT intent was sent with the request code  
// READ_REQUEST_CODE. If the request code seen here doesn't match, it's the  
// response to some other intent, and the code below shouldn't run at all.  
if (requestCode == RESULT_PICK_IMAGEFILE && resultCode == Activity.RESULT_OK) {  
// The document selected by the user won't be returned in the intent.  
// Instead, a URI to that document will be contained in the return intent  
// provided to this method as a parameter.  
// Pull that URI using resultData.getData().  
Uri uri = null;  
if (resultData != null) {  
uri = resultData.getData();  
Log.i("", "Uri: " + uri.toString());  

try {  
Bitmap bmp = getBitmapFromUri(uri);  
imageView.setImageBitmap(bmp);  
} catch (IOException e) {  
e.printStackTrace();  
}  
}  
}  
}  

private Bitmap getBitmapFromUri(Uri uri) throws IOException {  
ParcelFileDescriptor parcelFileDescriptor =  
getContentResolver().openFileDescriptor(uri, "r");  
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();  
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);  
parcelFileDescriptor.close();  
return image;  
}  
}  

試したこと

参考URLhttps://akira-watson.com/android/gallery.html
上記を元に作成(コピペ)
しかしエラー....

補足情報(言語/FW/ツール等のバージョンなど)

Android stadio 2.3.3で作成中

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

回答 2

checkベストアンサー

+2

import android.widget.TextView;
import android.os.Environment;

の記述が不足しているのが原因でしょう。参考にしたサイトには確かに無いですが、こういう資料ミスはよくあることなので、「丸写し以外では一歩も進めない」ようだと学習は大変だと思いますよ。

Android Studioのメニューで「File」→「Settings」を選び、左側リストから「Editor」→「General」→「Auto Import」と展開し、右側の設定画面で画像のような2箇所にチェックを入れておくと、ほとんどの場合に自動的にimport文を挿入してくれるので、こういうトラブルを回避できるようになるでしょう。

Auto Importの設定

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/23 11:01

    ありがとうございます問題が解決いたしました。
    今後作成においては自分の頭で考えられるようにjavaについてさらに勉強いたします

    キャンセル

+1

下記を確認してください。
・パッケージは設定していますか。
・クラス名とファイル名は一致していますか。
・全角文字は入っていませんか。
・xmlは定義していますか。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/23 11:02

    ヒントをありがとうございます.サイド徹底いたします.

    キャンセル

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

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる