so bin ich ein Anfänger mit Programmierung und einfach nur selbst zu lehren alles. Ich habe ein paar Dinge zu arbeiten, aber jetzt habe ich das folgende Problem:Android: Intent funktioniert nicht onClick
Szenario: Ich habe 2 Aktivitäten. In einer Aktivität klicke ich auf eine Schaltfläche. onClick
es sollte Text im Zeichenfolgenformat aus einer Textdatei im Ordner "Assets" abrufen und an die nächste Aktivität senden und die Zeichenfolge im Feld textView
anzeigen.
Das Problem: , die ich jetzt habe, ist: Ich kann auf die Schaltfläche klicken, es öffnet die nächste Aktivität, aber ich sehe keinen Text. Und ich kann nicht wirklich herausfinden, was falsch läuft. Ich habe versucht, eine breakline
auf der Schaltfläche während des Debuggens, aber ich kann keinen Sinn der Informationen machen, die der Debugger auf mich wirft. :(
Ich habe den folgenden Code:
Aktivität 1: IndoorMenuActivity.java
public class IndoorMenuActivity extends AppCompatActivity {
public static final String EXTRA_MESSAGE = "com.example.myapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_indoor_menu);
Button btn = (Button)findViewById(R.id.button66);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(IndoorMenuActivity.this, ViewActivity.class);
String text = "";
try{
InputStream is = getAssets().open("file.txt");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
text = new String(buffer);
} catch (IOException ex) {
ex.printStackTrace();
}
intent.putExtra(EXTRA_MESSAGE, text);
startActivity(intent);
}
});
}
}
Aktivität 2: ViewActivity.java
public class ViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view);
// Get the Intent that started this activity and extract the string
Intent intent = getIntent();
String message = intent.getStringExtra("com.example.myapp.MESSAGE");
// Capture the layout's TextView and set the string as its text
TextView textView = (TextView) findViewById(R.id.tv_text);
textView.setText(message);
}
}
Und mein Manifest-Datei: AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GeneralInformationActivity" />
<activity android:name=".IndoorMenuActivity" >
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
<activity android:name=".OutdoorMenuActivity" />
<activity android:name=".ViewActivity" />
<activity android:name=".DatabaseMenuActivity" />
<activity android:name=".ToolsMenuActivity" />
<activity android:name=".SplashActivity"></activity>
</application>
Ich weiß nicht, wie ich das lösen soll oder wo ich nach den richtigen Informationen suchen soll, damit ich sehen kann, wo ich falsch gelaufen bin. Ich habe Code einfach zerstückelt und zerschnitten und das meiste funktionierte irgendwie. Aber mit diesem tieferen Zeug bin ich im Grunde verloren. Und um es ein bisschen schwieriger zu machen: ich kenne keine Standard-Programmierpraktiken oder Begriffe, die damit einhergehen, so dass einige einfache Erklärungen und Hilfe sehr geschätzt werden. Prost und vielen Dank im Voraus.
überprüfen Sie Ihre logcat –
Sie sollten folgenden Schritt überprüfen: 1. Direkt 'intent.putExtra (EXTRA_MESSAGE, "diese Testnachricht ist");' sicher grundlegenden Code Arbeit 2. Lesen Sie Ihre Log (Android-Monitor auf machen IDE), wird es stackTrace zeigen, wenn es aufgrund Ihrer Datei eine Ausnahme gibt (nicht vorhanden, falscher Pfad, Zulässigkeit ....) 3. Überprüfen Sie Ihr Layout-Textfeld, ob sein Wert irgendwo in Ihrem Code zurückgesetzt wird. – TranVo
Danke für den Vorschlag. Ich habe einige Fehlermeldungen und postete sie unten in einer Antwort. – user2645886