2017-01-20 3 views
-3

Я новичок в Android развития, когда Android-студия в "Основная деятельность" класс компилируется я получаю ошибку Error '}' ожидается андроидAndroid Студия MainActivity.java :: Ошибка: '}' ожидается

public class ShowWebView extends Activity { 

    //private Button button; 
    private WebView webView; 

    final Activity activity = this; 

    public Uri imageUri; 

    private static final int FILECHOOSER_RESULTCODE = 2888; 
    private ValueCallback<Uri> mUploadMessage; 
    private Uri mCapturedImageURI = null; 

    private View adview; 

    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 

     //////////////////////////SETUP Web Link////////////////////////////////// 
     String webViewUrl = "http://doblist.com/"; 

     //Get webview 
     webView = (WebView) findViewById(R.id.webView1); 
     //startWebView("http://50.73.3.244/Mobile/"); 

     // Javascript inabled on webview 
     webView.getSettings().setJavaScriptEnabled(true); 

     // Other webview options 
     webView.getSettings().setLoadWithOverviewMode(true); 

     //webView.getSettings().setUseWideViewPort(true); 

     //Other webview settings 
     webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
     webView.setScrollbarFadingEnabled(false); 
     webView.getSettings().setBuiltInZoomControls(true); 
     webView.getSettings().setPluginState(WebSettings.PluginState.ON); 
     webView.getSettings().setAllowFileAccess(true); 
     webView.getSettings().setSupportZoom(true); 

     //Load url in webview 
     webView.loadUrl(webViewUrl); 

     // Define Webview manage classes 
     startWebView(); 
    } 

    private void startWebView() { 

     //Create new webview Client to show progress dialog 
     //Called When opening a url or click on link 

     webView.setWebViewClient(new WebViewClient() { 
      ProgressDialog progressDialog; 

      //If you will not use this method url links are open in new brower not in webview 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 

       // Check if Url contains ExternalLinks string in url 
       // then open url in new browser 
       // else all webview links will open in webview browser 
       if(url.contains("3j3j3j2i3j2i3ji2")) 
       { 

        // Could be cleverer and use a regex 
        //Open links in new browser 
        view.getContext().startActivity(
          new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 

        // Here we can open new activity 

        return true; 

       } else { 

        // Stay within this webview and load url 
        view.loadUrl(url); 
        return true; 
       } 
      } 

      //Show loader on url load 
      public void onLoadResource (WebView view, String url) { 

       // if url contains string androidexample 
       // Then show progress Dialog 
       if (progressDialog == null && url.contains("lol") 
         ) { 
        // in standard case YourActivity.this 
        progressDialog = new ProgressDialog(ShowWebView.this); 
        progressDialog.setMessage("Loading..."); 
        progressDialog.show(); 
       } 
      } 

      // Called when all page resources loaded 
      public void onPageFinished(WebView view, String url) { 
       try{ 
        // Close progressDialog 
        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
         progressDialog = null; 
        } 
       }catch(Exception exception){ 
        exception.printStackTrace(); 
       } 
      } 
     }); 

     // implement WebChromeClient inner class 
     // we will define openFileChooser for select file from camera 
     webView.setWebChromeClient(new WebChromeClient() { 

      // openFileChooser for Android 3.0+ 
      public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType){ 
       /**updated, out of the IF **/ 
       mUploadMessage = uploadMsg; 
       /**updated, out of the IF **/ 

       try{ 
        File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "AndroidExampleFolder"); 
        if (!imageStorageDir.exists()) { 
         imageStorageDir.mkdirs(); 
        } 
        File file = new File(imageStorageDir + File.separator + "IMG_" + String.valueOf(System.currentTimeMillis()) + ".jpg"); 
        mCapturedImageURI = Uri.fromFile(file); // save to the private variable 

        final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
        // captureIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

        Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
        i.addCategory(Intent.CATEGORY_OPENABLE); 
        i.setType("image/*"); 

        Intent chooserIntent = Intent.createChooser(i, "Image Chooser"); 
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Parcelable[] { captureIntent }); 

        startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE); 
       } 
       catch(Exception e){ 
        Toast.makeText(getBaseContext(), "Camera Exception:"+e, Toast.LENGTH_LONG).show(); 
       } 
       //} 
      } 

      // openFileChooser for Android < 3.0 
      public void openFileChooser(ValueCallback<Uri> uploadMsg){ 
       openFileChooser(uploadMsg, ""); 
      } 

      //openFileChooser for other Android versions 
      public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { 
       openFileChooser(uploadMsg, acceptType); 
      } 

      /** Added code to clarify chooser. **/ 

      //The webPage has 2 filechoosers and will send a console message informing what action to perform, taking a photo or updating the file 
      public boolean onConsoleMessage(ConsoleMessage cm) { 
       onConsoleMessage(cm.message(), cm.lineNumber(), cm.sourceId()); 
       //Toast.makeText(getBaseContext(), cm.message()+" :message", Toast.LENGTH_LONG).show(); 
       return true; 
      } 
      public void onConsoleMessage(String message, int lineNumber, String sourceID) { 
       //Log.d("androidruntime", "Per c�nsola: " + message); 
       //Toast.makeText(getBaseContext(), message+":message", Toast.LENGTH_LONG).show(); 
       //if(message.endsWith("foto")){ boolFileChooser= true; } 
       //else if(message.endsWith("pujada")){ boolFileChooser= false; } 
      } 
      /** Added code to clarify chooser. **/ 
     }); 
    } 
    // Return here when file selected from camera or from SDcard 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
            Intent intent) { 

     if(requestCode==FILECHOOSER_RESULTCODE) 
     { 

      if (null == this.mUploadMessage) { 
       return; 
      } 

      Uri result=null; 

      try{ 
       if (resultCode != RESULT_OK) { 

        result = null; 

       } else { 

        // retrieve from the private variable if the intent is null 
        result = intent == null ? mCapturedImageURI : intent.getData(); 
       } 
      } 
      catch(Exception e) 
      { 
       Toast.makeText(getApplicationContext(), "activity :"+e, Toast.LENGTH_LONG).show(); 
      } 
      mUploadMessage.onReceiveValue(result); 
      mUploadMessage = null; 
     } 
    } 

    // Open previous opened link from history on webview when back button pressed 

    @Override 
    // Detect when the back button is pressed 
    public void onBackPressed() { 
     if(webView.canGoBack()) { 
      webView.goBack(); 
     } else { 
      // Let the system handle the back button 
      super.onBackPressed(); 
     } 
    } 
    public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.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); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 
} 

Вот мой класс MainActivity компилируется, но я получаю сообщение об ошибке Error «}» ожидается андроида

+1

Контрольный код. '}' отсутствует –

+1

после 'super.onBackPressed();' add one '}' –

+1

, как говорится в ошибке, вы пропустили '}' где-то. И вам лучше найти, где именно. –

ответ

4

Вы пропускаете } в конце класса.

В принципе, вы забыли закрыть свой класс ShowWebView. Все, что вам нужно сделать, это добавить } в конце. Остальная часть кода выглядит хорошо для меня.

К моему удивлению, эта ошибка должна быть обнаружена вашей IDE (Android Studio), которая должна выглядеть примерно так.

enter image description here

Смежные вопросы