私は、Google Cloudのバックエンドからデータを受け取り、チュートリアルHello Endpointsから始まるエンドポイントとして返すコードを作成しようとしています。 https://cloud.google.com/appengine/docs/java/endpoints/helloendpoints-android-studioonPostExecuteからテキストビューを更新する
私はトーストの代わりにテキストビューとして結果を取得しようとしています。試しました
package com.example.username.textviews;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.util.Pair;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import com.example.neil.myapplication.backend.myApi.MyApi;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.extensions.android.json.AndroidJsonFactory;
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
import com.google.api.client.googleapis.services.GoogleClientRequestInitializer;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private TextView t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t = (TextView) findViewById(R.id.response);
new EndpointsAsyncTask().execute(new Pair<Context, String>(this, "Manfred"));
}
}
class EndpointsAsyncTask extends AsyncTask<Pair<Context, String>, Void, String> {
private static MyApi myApiService = null;
private Context context;
@Override
protected String doInBackground(Pair<Context, String>... params) {
if(myApiService == null) { // Only do this once
MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(),
new AndroidJsonFactory(), null)
// options for running against local devappserver
// - 10.0.2.2 is localhost's IP address in Android emulator
// - turn off compression when running against local devappserver
.setRootUrl("http://10.0.2.2:8080/_ah/api/")
.setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
@Override
public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
abstractGoogleClientRequest.setDisableGZipContent(true);
}
});
// end options for devappserver
myApiService = builder.build();
}
context = params[0].first;
String name = params[0].second;
try {
return myApiService.sayHi(name).execute().getData();
} catch (IOException e) {
return e.getMessage();
}
}
@Override
protected void onPostExecute(String result) {
//Toast.makeText(context, result, Toast.LENGTH_LONG).show();
t.setText(result);
}
}
activity_main.xmlに@ + id/responseに必要な行を追加し、strings.xmlに応答しました。
これは、onPostExecute()内からtを認識することも、findViewByIdをまったく使用することもできません。
私はこれをsussedしたとき、私はデータストアから取得する必要があります。フィールド1〜テキストフィールド1など