2017-10-30 10 views
0

Retrofit2を使用してデータをデータベースにアップロードするAndroidアプリケーションを作成しています。私がデータを提出すると、データベースに送られますが、エラーは常には、のインタフェースの引数なしコンストラクタを呼び出すことができません。私はさまざまなソリューションを探してみましたが、うまくいかないようです。Retrofit 2.0 - インターフェイス用の引数なしコンストラクタを呼び出すことができません

は、これは私のAPIのクラスです:

import javax.xml.transform.Result; 
import retrofit2.http.Field; 
import retrofit2.http.FormUrlEncoded; 
import retrofit2.http.POST; 

public interface RegisterAPI { 

@FormUrlEncoded 
@POST("insertText.php") 
retrofit2.Call<Result> createUser(
     @Field("name") String name, 
     @Field("age") String age); 

} 

そして、これは私のInsertActivityクラスです:

public static final String ROOT_URL= "https://MYURL/"; 

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

    editTextName = (EditText) findViewById(R.id.editTextName); 
    editTextAge = (EditText) findViewById(R.id.editTextAge); 

    buttonRegister = (Button) findViewById(R.id.buttonRegister); 

    buttonRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      insertUser(); 
     } 
    }); 
} 

    public void insertUser(){ 

    String name = editTextName.getText().toString().trim(); 
    String age = editTextAge.getText().toString().trim(); 

    Gson gson = new GsonBuilder() 
      .setLenient() 
      .create(); 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(ROOT_URL) 
      .addConverterFactory(GsonConverterFactory.create(gson)) 
      .build(); 

    RegisterAPI service = retrofit.create(RegisterAPI.class); 

    Call<Result> call = service.createUser(
      name, 
      age 
    ); 

    call.enqueue(new Callback<Result>() { 
     @Override 
     public void onResponse(Call<Result> call, Response<Result> response) { 
      Toast.makeText(getApplicationContext(), "SUCCESS", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onFailure(Call<Result> call, Throwable t) { 
      Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

} 

答えて

0

あなたが応答を取得するときには、javax.xml.transform.Resultはインターフェイスであるため起こるので、Gsonデシリアライザ作成できないインターフェイスへの応答を変換しようとします。

解決するには、javax.xml.transform.Resultの実装を渡すことができます。

ところで、あなたはResultの間違ったインポートを使用していると確信しています。

+0

はい、あなたは正しいです。助けてくれてありがとう! –

関連する問題