2017-01-23 1 views
0

이 오류를 해결하는 방법에 대한 정보는 도움이됩니다. 나는 그것을 얻을 수없는 것 같습니다.기호 'v'와 예상대로를 해결할 수 없습니다.);

나는이 부분에서 오류가 발생했습니다.

signup.setOnClickListener((v) → { 
     String uName = username.getText().toString().trim(); 
     String mail = email.getText().toString().trim(); 
     String pass = password.getText().toString().trim(); 

     signup(uName, mail, pass); 

     }); 

전체 코드 :

public class SignUp extends AppCompatActivity { 
    private String TAG = SignUp.class.getSimpleName(); 
    private EditText username, email, password; 
    private Button signup; 
    private ProgressDialog progressDialog; 
    private UserSession session; 
    private UserInfo userInfo; 
    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
    private GoogleApiClient client2; 

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

     username = (EditText) findViewById(R.id.username); 
     email = (EditText) findViewById(R.id.email); 
     password = (EditText) findViewById(R.id.password); 
     signup = (Button) findViewById(R.id.signup); 
     progressDialog = new ProgressDialog(this); 

     GoogleApiClient client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 

     session = new UserSession(this); 
     userInfo = new UserInfo(this); 


     signup.setOnClickListener((v) → { 
     String uName = username.getText().toString().trim(); 
     String mail = email.getText().toString().trim(); 
     String pass = password.getText().toString().trim(); 

     signup(uName, mail, pass); 

     }); 

     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client2 = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
    } 

    private void signup(final String username, final String email, final String password) { 
     //Tag used to cancel the request 
     String tag_string_req = "req_signup"; 
     progressDialog.setMessage("Signing up..."); 
     progressDialog.show(); 

     StringRequest strReq = new StringRequest(Request.Method.POST, 
       Utils.REGISTER_URL, new Response.Listener<String>() { 

      @Override 
      public void onResponse(String response) { 
       Log.d(TAG, "Register Response: " + response.toString()); 

       try { 
        JSONObject jOBj = new JSONObject(response); 
        boolean error = jOBj.getBoolean("error"); 

        //Check for error node in json 
        if (!error) { 
         JSONObject user = jOBj.getJSONObject("user"); 
         String uName = user.getString("username"); 
         String email = user.getString("email"); 

         //Inserting row in users table 
         userInfo.setEmail(email); 
         userInfo.setUsername(uName); 
         session.setLoggedin(true); 

         startActivity(new Intent(SignUp.this, MainActivity.class)); 

        } else { 
         //Error in login. Get the error message 
         String errorMsg = jOBj.getString("error_msg"); 
         toast(errorMsg); 
        } 
       } catch (JSONException e) { 
        //JSON error 
        e.printStackTrace(); 
        toast("Json error: " + e.getMessage()); 
       } 

      } 


     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Login Error: " + error.getMessage()); 
       toast("Unknown Error occured"); 
       progressDialog.hide(); 
      } 
     }) { 

      @Override 
      protected Map<String, String> getParams() { 
       //posting parameters to login url 
       Map<String, String> params = new HashMap<>(); 
       params.put("username", username); 
       params.put("email", email); 
       params.put("password", password); 

       return params; 
      } 

     }; 
    } 

    private void toast(String x) { 
     Toast.makeText(this, x, Toast.LENGTH_SHORT) 
    } 


    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
    public Action getIndexApiAction() { 
     Thing object = new Thing.Builder() 
       .setName("SignUp Page") // TODO: Define a title for the content shown. 
       // TODO: Make sure this auto-generated URL is correct. 
       .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]")) 
       .build(); 
     return new Action.Builder(Action.TYPE_VIEW) 
       .setObject(object) 
       .setActionStatus(Action.STATUS_TYPE_COMPLETED) 
       .build(); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client2.connect(); 
     AppIndex.AppIndexApi.start(client2, getIndexApiAction()); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 

     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     AppIndex.AppIndexApi.end(client2, getIndexApiAction()); 
     client2.disconnect(); 
    } 
} 

PLS는 무슨 일이 일어나고 있는지 설명한다.

+0

는이 프로젝트에 다른 소스에서 다시 입력 했습니까? – TruongHieu

+0

왜 PHP에 정확히 태그를 지정 했습니까? 나는 아무 것도 볼 수 없다. –

+0

Java 8 또는 이전 버전을 사용하고 있습니까? 그리고 실제로 코드에서'→'을 사용 했습니까? 아니면'->'입니까? –

답변

0

아래 코드를 setOnClickListener과 같이 설정해야합니다.

signup.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        String uName = username.getText().toString().trim(); 
        String mail = email.getText().toString().trim(); 
        String pass = password.getText().toString().trim(); 
        signup(uName, mail, pass); 
       } 
      }); 
3

로 코드를 바꿉니다 람다 구문은 ->하지 사용합니다. 이거 어디서 났니? (편집 : 이것은 IntelliJ의 코드 줄임입니다. IntelliJ에서 복사 했습니까?)

람다를 사용하려면 이것을 사용하십시오. Use Java 8 Language Features를 참조

signup.setOnClickListener(v -> { 
    String uName = username.getText().toString().trim(); 
    String mail = email.getText().toString().trim(); 
    String pass = password.getText().toString().trim(); 
    signup(uName, mail, pass); 
}); 

에만 자바 8 (파일 Gradle을의 버전을 설정 등) 에서 작동합니다.

편집 : Java 7 이하는 람다를 지원하지 않습니다.

signup.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String uName = username.getText().toString().trim(); 
     String mail = email.getText().toString().trim(); 
     String pass = password.getText().toString().trim(); 
     signup(uName, mail, pass); 
    } 
}); 

편집 : 왜 getText().toString()를 사용 자바 < 8을 사용하려면, 전체 인터페이스와 익명의 내부 클래스를 사용? 그래도 은 String을 반환하지 않습니까? 코드에서 toString으로 이러한 통화를 삭제할 수 있습니다.

+0

나는이 람다가 아니라고 생각합니다. IntelliJ가보기 쉬운 코드를 위해하는 최소화 된보기입니다. – TruongHieu

0

아래로 온 클릭 리스너를 교체 :

signup.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String uName = username.getText().toString().trim(); 
      String mail = email.getText().toString().trim(); 
      String pass = password.getText().toString().trim(); 

      signup(uName, mail, pass); 
     } 
    }); 
관련 문제