2013-07-08 21 views
8

Chcę przejść z jednej czynności do drugiej (za pomocą urządzenia wirtualnego). Kiedy klikam przycisk, aby przenieść, Moje emulatory te okno dialogowe pokazujące unfortunately SMS1 has stopped working (SMS1 to moja nazwa aplikacji).Przenoszenie z jednej aktywności na inną Aktywność w Androidzie

Czy ktoś może mi pomóc w poprawieniu mojego kodu?

MainActivity.java:

package com.example.sms1; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener 
{ 

Button b1; 
TextView tv1; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    b1 = (Button) findViewById(R.id.button1); 
    tv1 = (TextView) findViewById(R.id.textView1); 

    b1.setOnClickListener(this); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public void onClick(View v) 
{ 
    // TODO Auto-generated method stub 
    Intent i = new Intent(getApplicationContext(),NextActivity.class); 
    startActivity(i); 
    setContentView(R.layout.avtivity_next); 
} 



} 

Oto NextActivity

package com.example.sms1; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.TextView; 

public class NextActivity extends Activity { 

TextView tv1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.avtivity_next); 
    tv1 = (TextView) findViewById(R.id.textView1); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.sms1" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.sms1.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

NextActivityLayout

<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" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".NextActivity" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="next activity" /> 



</RelativeLayout> 

główną działalność Układ

<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" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="80dp" 
    android:layout_toRightOf="@+id/textView1" 
    android:text="Button" /> 

</RelativeLayout> 
+1

mają u określić NextActivity w pliku manifest.xml –

+0

umieścić ur logcat tutaj –

+0

nie ma drugiego aktywność w menifest – farrukh

Odpowiedz

6

nie zdefiniowano NextActivity w pliku AndroidManifest.xml.

Dodaj te linie w manifeście Android po tagu </activity>. Powinno działać.

<activity 
    android:name=".NextActivity" > 
</activity> 

końcowy kod będzie

<application 
    android:allowBackup="true" 
    android:icon="@drawable/app_icon" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".MainActivity" 
     android:label="Main Activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".NextActivity" > 
    </activity> 
</application> 
3

Wystarczy dodać swój NextActivity w pliku Manifest.XML

<activity 
      android:name="com.example.sms1.NextActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 
+0

Dziękuję :) rozwiązał mój problem –

+0

Jeśli możesz zaakceptować odpowiedź, aby mogła być pomocna dla społeczności. –

0

setContentView (R.layout.avtivity_next);

Myślę, że ta linia kodu powinny zostać przeniesione do następnej aktywności ...

1

1) umieścić setContentView(R.layout.avtivity_next); do następnej aktywności za onCreate() metoda podobnie jak ten (Główny) Aktywność w onCreate()

2), jeśli nie określono następnej aktywności w twoich-apps plik manifestu następnie to zrobić również, jak:

<application 
     android:allowBackup="true" 
     android:icon="@drawable/app_icon" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".MainActivity" 
      android:label="Main Activity" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".NextActivity" 
      android:label="Next Activity" > 
     </activity> 
    </application> 

trzeba mieć, aby wykonać 2 krok za każdym razem, gdy tworzysz nową działalność, w przeciwnym razie Aplikacja ulegnie awarii

+0

witamy; może powinieneś wybrać najlepszą odpowiedź, jeśli masz rozwiązanie swojego problemu (klikając strzałkę wraz z tą odpowiedzią) –

10

Pierwszy Trzeba stosować ten kod do MainActivity.java

@Override 
public void onClick(View v) 
{ 
    // TODO Auto-generated method stub 
    Intent i = new Intent(getApplicationContext(),NextActivity.class); 
    startActivity(i); 

} 

można przekazać intencyjny w ten sposób.

drugie

dodać odpowiedni wpis do manifest.xml pliku.

<activity android:name=".NextActivity" /> 

Zobacz, co się stanie.

+0

thankq:) ............. –

0
public void onClick(View v) 
{ 
startActivity(new Intent(getApplicationContext(), Next.class)); 

} 

jest bezpośredni sposób przenieść drugą działalność i nie ma potrzeby połączenia zamiarem

0

poniższy kod działa poprawnie z Androidem 4.3:

Intent i = new Intent(this,MainActivity2.class); 
startActivity(i); 
3

Button1 w activity2

kod napisany w działalności 2

button1.setOnClickListener(new View.OnClickListener() {   
     public void onClick(View v) 
     { 
      // starting background task to update product    
      Intent fp=new Intent(getApplicationContext(),activity1.class);    
      startActivity(fp);    
     } 
    }); 

To może pomóc

0

To głównie dzięki działalności niezarejestrowanej w pliku manifestu jako „NextActivity” Po pierwsze zarejestruj NextActivity w jawnym jak

<activity android:name=".NextActivity"> 

następnie użyć kodu w którym chcesz

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

gdzie musisz zadzwonić do NextActivity ..

0

Najpierw musisz zadeklarować działalność w Manifeście. To jest ważne. Możesz dodać tę wewnętrzną aplikację w ten sposób.

+0

aktywność android: name = " .NextActivity "> Następnie możesz nazwać Intent i = new Intent (this, MainActivity2.class); startActivity (i); –

0

Zarejestruj klasa java na Androida pliku manifestu

Po tym napisać ten kod na przycisku kliknij

startActivity(new intent(MainActivity.this,NextActivity.class)); 
1

Kiedy trzeba przejść z jednej strony na inną stronę w Android zmiany dokonane w 2 plikach

Intent intentSignUP = new Intent(this,SignUpActivity.class); 
    startActivity(intentSignUP); 

aktywność dodatek w pliku androidManifest jak również

<activity android:name=".SignUpActivity"></activity> 
-2

Można zrobić

Intent i = new Intent(classname.this , targetclass.class); 
startActivity(i); 
+0

Proszę wyjaśnić, * jak * i * dlaczego * to rozwiązuje pytanie OP? –

Powiązane problemy