2017-12-14 7 views
-2

次のコードでURLから画像を取得する簡単なアプリケーションを構築しようとしていますが、findViewById(FloatingActionButton)エラーで適切なメソッドが見つからない場合は、 ほとんどのコードは、アンドロイドスタジオのbiolerplate for basic activityですが、とにかく誤動作したコードを見つけることができません。findViewById(FloatingActionButton)の適切なメソッドが見つかりません

import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.os.AsyncTask; 
    import android.os.Bundle; 
    import android.support.design.widget.FloatingActionButton; 
    import android.support.design.widget.Snackbar; 
    import android.support.v7.app.AppCompatActivity; 
    import android.support.v7.widget.Toolbar; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.widget.ImageView; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.net.HttpURLConnection; 
    import java.net.MalformedURLException; 
    import java.net.URL; 

    import static singh.rahul.com.imagedownloader.R.id.fab; 

    public class MainActivity extends AppCompatActivity { 

    ImageView imgDownloaded; 

    public void DownloadImage(View v){ 
     ImageDownloaderClass task=new ImageDownloaderClass(); 
     Bitmap myRawImage; 
     try{ 
      myRawImage=task.execute("Any Image URL").get(); 
      imgDownloaded.setImageBitmap(myRawImage); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

    } 

    public class ImageDownloaderClass extends AsyncTask<String,Void,Bitmap>{ 
     @Override 
     protected Bitmap doInBackground(String... urls){ 
      try{ 
       URL url=new URL(urls[0]); 
       HttpURLConnection connections=(HttpURLConnection) url.openConnection(); 
       connections.connect(); 
       InputStream is=connections.getInputStream(); 
       Bitmap theBitmap= BitmapFactory.decodeStream(is); 
       return theBitmap; 

      }catch (MalformedURLException mue){ 
       mue.printStackTrace(); 
      }catch(IOException ioe){ 
       ioe.printStackTrace(); 
      } 

      return null; 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     imgDownloaded=(ImageView) findViewById(R.id.imageView); 
     FloatingActionButton fab = (FloatingActionButton) findViewById(fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Downloading Image...", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
       DownloadImage(View); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

助けを楽しみにしています!

+1

'FloatingActionButton FAB =(FloatingActionButton)findViewById(FAB);' –

+1

は 'FloatingActionButton FAB =(FloatingActionButton)findViewById(R.id.fab)を交換'主に意見-based' –

+0

を閉じるために、投票、働い ' –

答えて

2

代わりのfab

FloatingActionButton fab = (FloatingActionButton) findViewById(fab); 

あなたは(XMLレイアウトから)IDを渡す必要があります。また

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.your_fab); 

、FABボタンリスナー、この線の内側:

DownloadImage(View); 

は:

DownloadImage(view); //lower case 
+0

おかげ、別の問題が発生しました。Error:(73、31)error:シンボル変数Viewを見つけることができません。 –

+0

@JamesMacCoy 'import android.view.View;' –

+0

'DownloadImage(View);'(小文字)の代わりに 'DownloadImage(view);'をボタンリスナー –

1

findViewById(int id)

このメソッドは、引数をint(ビューのID)として受け取ります。代わりに、この

FloatingActionButton fab = (FloatingActionButton) findViewById(fab); 

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.yourId); 
0

使用この

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 

これが役立つことを願っています。

関連する問題