Ich habe alles den ganzen Tag versucht. Ich möchte, dass verschiedene Schaltflächen funktionieren, wenn ich auf sie klicke. Das habe ich mit AsyncTasks gemacht.AsyncTask zeigt keine URI
MainActivity.java
package com.mudd.devin.drive_now;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import java.net.URI;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
final Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
new Action().execute();
}
});
}
}
Action.java
package com.mudd.devin.drive_now;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import java.net.URI;
import java.util.Locale;
/**
* Created by Devin on 4/9/2016.
*/
public class Action extends AsyncTask<URI, URI, Intent> {
@Override
protected Intent doInBackground(URI... params) {
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
return intent;
}
}
Vielen Dank im Voraus. Heute habe ich gemerkt, dass ich ein wirklich beschissener Entwickler bin und Apps sind wirklich schwer zu machen.
Machst du eigentlich irgendwas in 'onPostExecute (Intent result)' - hast du diese Methode in deiner 'Action'' AsyncTask' überschrieben, um etwas mit der Absicht zu tun? Siehe auch: https://developers.google.com/maps/documentation/android-api/intents#overview P.S. Sei nicht zu hart zu dir selbst! –
Ich habe nichts in OnPostExecute getan. Ich habe nur doInBackground berührt. Ich weiß, dass der Google Maps-Code funktioniert, weil ich ihn zuvor verwendet habe. – deeup511
Nun, Sie müssen diese Methode überschreiben, um etwas mit der Absicht zu tun. Wenn Sie Android Studio verwenden, stellen Sie sicher, dass sich der Cursor irgendwo in Ihrer Action-Klasse befindet, gehen Sie zum "Code" -Menü, wählen Sie "Methoden überschreiben" und wählen Sie "onPostExecute()" - dies zeigt die neue Methode an. overadden "Jetzt können Sie alles mit dem Ergebnisobjekt (intent) wie' startActivity (intent) tun. Um ehrlich zu sein, für das, was Sie tun, brauchen Sie für diesen Vorgang keine AsyncTask. –