Не могу переключиться между действиями - PullRequest
0 голосов
/ 09 февраля 2012

извините, что задаю глупые вопросы, java и Android оба для меня новы;)

Моя проблема: я не могу переключаться между двумя действиями в очень простом приложении. Я пробовал решения, описанные в похожих темах, но это не сработало.

Итак, это мое первое действие (я не вставлял импорт):

public class OneActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

public void OnStart(){
    Button Btn = (Button)findViewById(R.id.btnNext);     
    Btn.setOnClickListener(new OnClickListener() {

        public void onClick(View Button) {

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

        } 

});
}

}

Второе действие очень простое - просто предполагается загрузить макет с именем userinput.xml:

public class UserInput extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.userinput);

}

}

Прикладная часть Манифеста выглядит следующим образом:

 <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <activity
        android:name=".OneActivity"
        android:label="@string/app_name" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>


        <activity 
            android:name=".UserInput" 
            android:label="@string/app_name" />


    </activity>
</application>

Когда я запускаю приложение и нажимаю кнопку , ничего не происходит. В чем может быть проблема?

// Хорошо, я поместил код в метод onCreate (), теперь он выглядит следующим образом:

public class OneActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button Btn = (Button)findViewById(R.id.btnNext);     
    Btn.setOnClickListener(new OnClickListener() {

        public void onClick(View Button) {

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

        } 

});
}

}

Теперь приложение вылетает (принудительно закрывается) каждый раз, когда я нажимаю кнопку Далее.

Ответы [ 4 ]

5 голосов
/ 09 февраля 2012

Вы определяете свою функцию onStart () с большой буквы «O». Вот почему функция никогда не вызывается.

Ваш onStart ():

public void OnStart(){ ... }

Как и должно быть:

// Note the lowercase 'o' in onStart
public void onStart(){ ... }

Также обратите внимание, что наличие @Override над именем функции, когда вы хотите переопределить метод, поможет предотвратить эти ошибки, поскольку Eclipse (или любая используемая вами IDE) скажет вам, что вы на самом деле не переопределяете функцию. 1009 *

1 голос
/ 09 февраля 2012

Введите приведенный ниже код в методе onCreate ():

Button Btn = (Button)findViewById(R.id.btnNext);     
    Btn.setOnClickListener(new OnClickListener() {

        public void onClick(View Button) {

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

        } 

});

2-е исправление для файла манифеста Android:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <activity
        android:name=".OneActivity"
        android:label="@string/app_name" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>                     <!-- closed here -->

        <activity 
            android:name=".UserInput" 
            android:label="@string/app_name" />



</application>
0 голосов
/ 09 февраля 2012

Вы можете переместить весь код в onCreate() и упростить вот так

startActivity(new Intent(this, UserInput.class));

Но я не понимаю, почему вы начинаете другое действие, подобное этому

0 голосов
/ 09 февраля 2012

Отметьте следующую строку

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

Ваше имя класса - UserIpnout, и вы пишете SecondActivity.class

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