2013-10-30 60 views
1

在此先感謝您的幫助。我是Java和Android編程的初學者,所以我的第一個應用只是在拍攝照片後從照片中選取RGB值。但是,最後一個錯誤是「令牌上的語法錯誤」字符串,請刪除此令牌「。這讓我瘋狂!似乎我所有的括號都在那裏,每個語句的語法都是正確的,對於正在發生的事情有什麼想法?我使用Eclipse,如果這有所作爲,最新版本。這是完整的代碼。問題開始於評論/* SET TEXT FUNCTION TO THE FIELD USING SET TEXT METHOD*/.語法錯誤在標記「字符串」上,刪除此標記

package com.example.firstapp; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.Matrix; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnTouchListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MainActivity extends Activity { //1 

    TextView pixelcord, rgbvals; 
    ImageView iv; 
    Button btn; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { //2 

     /* GATHER THE INFORMATION FROM THE LAYOUT TO ORGANIZE APP*/ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     /* SET ON CLICK LISTENER TO GET CLICK REPSONSE -- LAUNCH CAMERA AND TAKE PHOTO */ 
     /* SET VARIABLES FOR USE FROM EACH VIEW */ 
     iv = (ImageView) findViewById(R.id.imageView); /* USE IMAGE VIEW FIELD*/ 
     pixelcord = (TextView)findViewById(R.id.pixelcord); /* USE TEXT FIELD FOR PIXEL */ 
     rgbvals = (TextView)findViewById(R.id.rgbvals); /* USE TEXT FIELD FOR RGB VALUES*/ 
     btn = (Button) findViewById(R.id.takePhoto); 

     /* SET INFORMATION OF WHAT TO DO UPON EACH CLIK*/ 
     iv.setOnTouchListener(imgSourceOnTouchListener); 

/* =====================================CAMERA BUTTON=====================================*/   
     btn.setOnClickListener(new OnClickListener() { //3 

      @Override 

      public void onClick(View v) { //4 

       Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(intent, 0); 

      } //*4 


     }); //*3 
/* =======================================================================================*/   


     } /* END OF ON CREATE*/ //*2 

    /* DECLARATION OF IMG TOUCH FUNCTION*/ 

    OnTouchListener imgSourceOnTouchListener = new OnTouchListener() { //5 

     @Override 

     public boolean onTouch(View view, MotionEvent event) { //6 


      float eventX = event.getX(); 
      float eventY = event.getY(); 
      float[] eventXY = new float[] { eventX, eventY}; 

      Matrix invertMatrix = new Matrix(); 
      ((ImageView)view).getImageMatrix().invert(invertMatrix); 

      invertMatrix.mapPoints(eventXY); 
      int x = Integer.valueOf((int)eventXY[0]); /* POTENTIALLY REDUNDANT*/ 
      int y = Integer.valueOf((int)eventXY[1]); 


      /* SET TEXT FUNCTION TO THE FIELD USING SET TEXT METHOD*/ 
      pixelcord.setText("X:" String.valueOf(eventX) + "/ Y:" String.valueOf(eventY)); 


      int touchedRGB = iv.getDrawingCache().getPixel(x,y); 

      rgbvals.setText("Color Value" + "#" + Integer.toHexString(touchedRGB)); 
      rgbvals.setTextColor(touchedRGB); 

      return true; 

     } //*6 


    }; //*5 

    @Override 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { //7 
     if(requestCode == 0) 
     { //8 
      Bitmap theImage = (Bitmap) data.getExtras().get("data"); 
      iv.setImageBitmap(theImage); 

     } //*8 
    } //*7 


} //*1 
+0

謝謝大家!這解決了我的問題,但現在我還有一個問題。照片按鈕工作並將圖片發送到視圖,但是當我觸摸圖像時,程序崩潰而不是給我觸摸位置的RGB值。任何想法爲什麼? – Johnathan

回答

1

你缺少幾個+(concatination)運營商。你可能還想在「X:」之後放一個空格,使其成爲「X:」,這樣該值就可以很好地打印出來。

你的代碼應該是:

pixelcord.setText("X: " + String.valueOf(eventX) + "/ Y: " + String.valueOf(eventY)); 

不是:

pixelcord.setText("X:" String.valueOf(eventX) + "/ Y:" String.valueOf(eventY)); 

而且你不需要String.valueOf(...)功能,因爲Java將浮動愉快地轉換爲字符串爲您服務。所以,你的代碼可以簡單地是:

pixelcord.setText("X: " + eventX + "/ Y: " + eventY); 
+0

這解決了我的問題,但現在我還有一個問題。照片按鈕工作並將圖片發送到視圖,但是當我觸摸圖像時,程序崩潰而不是給我觸摸位置的RGB值。任何想法爲什麼? – Johnathan

+0

當它崩潰時,你會得到什麼錯誤? –

+0

在我的手機上運行它只是說應用程序已停止。我假設它必須處理imgSourceonTouchListener方法 – Johnathan

0

你需要更多的 「+」:

pixelcord.setText("X:" + String.valueOf(eventX) + "/ Y:" + String.valueOf(eventY));

0
pixelcord.setText("X:" String.valueOf(eventX) + "/ Y:" String.valueOf(eventY)); 

應該

pixelcord.setText("X:"+ String.valueOf(eventX) + "/ Y:"+ String.valueOf(eventY)); 
0

缺少+

替換行

pixelcord.setText(「X:」+ String.valueOf(eventX)+「/ Y:」+ String.valueOf(eventY));

0

setText()方法需要String。所以你只使用字符串值,對於這個問題你必須連接+符號

pixelcord.setText("X:"+ String.valueOf(eventX) + "/ Y:"+ String.valueOf(eventY)); 
相關問題