Uczę się budować aplikacje na Androida i potrzebuję konkretnej pomocy. Nie wiem, które bity kodu szablonu mam zmienić, a które są statyczne.
W folderze LAYOUT mam plik ACTIVITY_MAIN.XML, który czyta
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/main_buttons_photos" />
</LinearLayout>
Następnie mam drugie działanie ACTIVITY_SEND_PHOTOS.XML, czyli
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".SendPhotos" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/title_activity_send_photos"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
Mam wtedy plik MainActivity.java (czy to jest klasa. ?) Czyta pakiet com.example.assent.bc;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
// Do something in response to button
}
}
a następnie mój plik SendPhotos.java , który jest;
package com.example.assent.bc;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
public class SendPhotos extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send_photos);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_send_photos, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
Chciałbym, aby przycisk w mojej głównej aktywności łączył się z moją aktywnością sendphotos, po prostu otwierając tę czynność, nic nadzwyczajnego, nie wysyłanie żadnych danych ani nic.
Wiem, że gdzieś potrzebuję mojego
Intent i = new Intent(FromActivity.this, ToActivity.class);
startActivity(i);
ale nie mam pojęcia, czym zastąpić ToActivity.class lub czego jeszcze potrzebuję.
android
android-intent
android-activity
Henry Aspden
źródło
źródło
Odpowiedzi:
Możesz przejść do żądanej czynności po kliknięciu przycisku. po prostu dodaj tę linię.
android:onClick="sendMessage"
xml:
W swojej głównej aktywności po prostu dodaj tę metodę:
I najważniejsze: nie zapomnij zdefiniować swojej aktywności w
manifest.xml
źródło
>
w tagu aktywnościView
,Intent
oraz nazwy aktywności są w kolorze czerwonym. Czy muszę cokolwiek importować do widoku?android:onClick="sendMessage"
Spróbuj tego
źródło
Z działania: gdzie obecnie jesteś?
Do działania: gdzie chcesz iść?
Intent i = new Intent( MainActivity.this, SendPhotos.class); startActivity(i);
Oba działania muszą być zawarte w pliku manifestu, w przeciwnym razie nie znajdzie pliku klasy i nie wyrzuci Force close.
Edytuj plik Mainactivity.java
teraz Napisz kod zdarzenia kliknięcia.
Mam nadzieję, że to zadziała.
źródło
Odpowiedź na kompletnego nooba z kompletnego nooba:
MainActivity
to nazwa pierwszej czynności.MainActivity2
to nazwa drugiej czynności.button1
to identyfikator przycisku w XML dlaMainActivity
działania.źródło
po prostu wykonaj ten krok (nie piszę kodu tylko Bcoz, możesz kopiować i wklejać i nie mogę się nauczyć).
najpierw musisz zadeklarować przycisk, który masz w układzie
Podaj odniesienie do tego przycisku, znajdując jego identyfikator (używając findviewById) w oncreate
setlistener dla przycisku (jak setonclick listener)
ostatnia obsługa zdarzenia kliknięcia (oznacza rozpoczęcie nowej czynności przy użyciu zamiaru, jak już wiesz)
Nie zapomnij dodać aktywności w pliku manifestu
Przy okazji, to jest po prostu proste. Chciałbym zasugerować, że po prostu zacznij od prostych tutoriali dostępnych w sieci, które będą dla Ciebie lepsze.
Powodzenia dla Androida
źródło
Zastąp poniższy kod linii:
Dodaj poniższe wiersze do pliku manifestu:
źródło
Zastąp plik MainActivity.class tym kodem
Dodaj ten kod w swoim
AndroidManifest.xml
After</activity>
i Before</application>
źródło
To zawsze działa, albo jedno powinno być w porządku:
źródło
dodaj poniższy kod do pliku activity_main.xml:
i po prostu dodaj poniższą metodę do pliku MainActivity.java:
źródło
Jeśli masz dwa przyciski i masz ten sam identyfikator, wywołuje takie zdarzenia jak to:
Po kliknięciu
button1
,button2
będzie działać i nie można otworzyć drugą aktywność.źródło
W KODZIE JAVA
}
źródło
Możesz przejść do żądanej czynności po kliknięciu przycisku. po prostu dodaj
android: onClick = "timerApp" w tej linii.
W swojej głównej aktywności po prostu dodaj tę metodę:
LUB w metodzie onCreate () dodaj poniższy kod
źródło