2010-08-28 8 views
28

Wygląda na to, że każdy przykład przełączania się między czynnościami obejmuje tworzenie intencji i przekazywanie w kontekście widoku za pomocą narzędzia OnClickListener powiązanego z przyciskiem.Na Androidzie, w jaki sposób programowo zmieniasz aktywność?

Ale co, jeśli po prostu zdecydujesz, że musisz zmienić działanie? W moim przypadku wartość preferencji powoduje przełącznik aktywności.

Jak utworzyć intencję, która może spowodować zmianę aktywności bez powiązanego programu OnClickListener?

+8

„Działania”, a nie „Aktywność użytkownika”. Proszę. –

Odpowiedz

60

to powinien to zrobić dla Ciebie:

Intent myIntent = new Intent(this, MyActivityName.class); 
startActivity(myIntent); 

można nazwać z dowolnego miejsca w swojej bieżącej działalności.

+1

czy można przekazać nazwę działania jako ciąg? – mhshams

+4

@Mohammad Nie według żadnego z publicznych podpisów, które widziałem, ale możesz użyć 'Class.forName (pełna nazwa klasy)', aby zwrócić obiekt 'Class', a następnie przekazać obiekt' Class' do konstruktor 'Intent'. –

2

Zastosowanie PreferenceChangeListener :)

1

Można tworzyć intent w głównej działalności jak ten

Intent intent = new Intent(FirstActivity.this, second.class); 
startActivity(intent); 

Jeśli czekasz na wynik z drugiego należy użyć

StartActivityforresult(intent,request code).

Kod żądania może być dowolny integer.

2

kiedy kiedykolwiek chcesz zmienić aktywność. możesz zadzwonić do tych kodów.

Intent intent = new Intent(this, MyActivity.class); 
startActivity(intent); 

Możesz napisać ten kod w PreferenceChangeListener.

+0

Wy duplikowaliście, że inni faceci odpowiadają dokładnie ... wymyślcie odpowiedź. – Brian

3

mam najkrótszym Wersja

startActivity(new Intent(CurrentActivity.this,ActivityYouWantToOpen.class)); 
5

To zależy gdzie chcesz rozpocząć nową działalność w kodzie. Aby rozpocząć nową aktywność, potrzebujesz dostępu do odwołania do kontekstu (na przykład: onPostExecute w AsyncTask). Proszę spojrzeć na this.

Mimo że jest to w zasadzie to.

Intent myIntent = new Intent(this, ActivityName.class); 
startActivity(myIntent); 

To może być coś takiego jak

Intent myIntent = new Intent(context, ActivityName.class); 
context.startActivity(myIntent); 
+0

Znalazłem zabawne, jak zrobiłeś dokładnie ten sam typopis, co zaakceptowana odpowiedź z nazwą klasy "AvitivityName";) Mogłeś wskazać to w komentarzu, który znasz :) – AxelH

+0

@AxelH Yeah;) Pozwól mi scalić, czuję dobrze teraz, prawda? –

1
startActivity (new Intent (Thisactivity.this, Nextactivity.class)); 

Nie zapomnij dodać do listy aktywności manifest

<Activity android:name=".NextActivity> 
0

Najpierw trzeba stworzyć interfejs dla przy użyciu pliku intro_activity_1.XML. Po tym identyfikacyjnego dla grupy przycisków przy użyciu android: id = "@ + id/przycisku"

Przykład:

intro_activity_1.xml

<Button android:id="@+id/button"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:layout_weight="1"  
android:background="@android:color/transparent"  
android:text="NEXT" /> 

teraz zmienić klasę java pierwszej działalności. W tym przykładzie zmieniamy plik java z IntroActivity1.java

Przykład:

IntroActivity1.java

//header, import and package data 


public class IntroActivity1 extends AppCompatActivity { 


    Button next_btn; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.intro_activity_1); 

      next_btn=(Button)findViewById(R.id.button);//button class 

      next_btn.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View arg0){ 
     //Start new activity class 
       Intent myIntent=new Intent(IntroActivity1.this,IntroActivity2.class); 
      startActivity(myIntent); 
     } 
    }); 
} 

więcej szczegółów na temat działalności zmieniacza wizyty: https://answerdone.blogspot.com/2018/01/how-to-change-new-activity-in-android.html

Powiązane problemy