Başka bir etkinlik göstermek için Android uygulamasında Amaç kullanma


196

Android uygulamamda iki aktivite dersim var. Birincisinde bir düğme var ve ikinci tıklandığında göstermek istiyorum, ama bir hata alıyorum. İşte sınıflar:

public class FirstActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button orderButton = (Button)findViewById(R.id.order);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        Intent intent = new Intent(FirstActivity.this, OrderScreen.class);
        startActivity(intent);
      }

    });
  }
}

Düğmeye tıklandığında gösterilmesi gereken, ancak asla göstermeyen ikinci sınıf:

public class OrderScreen extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.order);

    Button orderButton = (Button) findViewById(R.id.end);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        finish();
      }

    });
  }
}

İkinci etkinliği gösterecek bir düğmeyi nasıl oluştururum?


Derleme veya çalışma süresi sırasında bir hata alıyor musunuz? Her iki durumda da hata nedir?
Quintin Robinson

3
Bu bir çalışma zamanı hatasıydı. Emülatör genel "uygulama beklenmedik bir şekilde durdu" hatası verdi, ancak hata ayıklayıcıyı kullanarak bir "android.content.ActivityNotFoundException: AndroidManifest.xml dosyasında bu etkinlik bildirildi mi?
Tai Squared

8
İnsanların etkinliklerini Manifest.xml dosyasına eklemeyi unuttukları çok yaygın bir hatadır, ancak otomatik olarak girmenin bir yolu olmalıdır.
AZ_

Yanıtlar:



161

Bu satırı AndroidManifest.xml'inize ekleyin:

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

7
İnsanlar neden bu cevabı aylar sonra değerlendirdiler?
Jaykul

4
@Jaykul 2013 tarihli düzenlemeyi kabul edilen cevapta görün
pomber

16

---- FirstActivity.java -----

    package com.mindscripts.eid;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

public class FirstActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button orderButton = (Button) findViewById(R.id.order);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(FirstActivity.this,OrderScreen.class);
            startActivity(intent);
        }
    });

 }
}

--- OrderScreen.java ---

    package com.mindscripts.eid;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;



    public class OrderScreen extends Activity {
@Override



protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_class);
    Button orderButton = (Button) findViewById(R.id.end);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
        }
    });

 }
}

--- AndroidManifest.xml ----

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


<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".FirstActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".OrderScreen"></activity>
</application>


1
Cevabınızı OP
Luca

4

Bu kodu kullanın:

Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
finish();

bağlam: mevcut aktivite bağlamına bakın,

android manifest dosyasında etkinlik eklediğinizden emin olun.

Android bildirim dosyasında etkinlik eklemek için aşağıdaki kod

<Activity name=".SecondActivity">
</Activity>

java.lang.IllegalStateException: GetUserNumber {536bc00c} Parçası, Etkinliğe eklenmedi.
Iman Marashi

4
<activity android:name="[packagename optional].ActivityClassName"></activity>

Geçmek istediğimiz aktiviteyi eklemek sadece manifest dosyasına yerleştirilmelidir


3

Android dosyasında herhangi bir etkinlik oluşturduğunuzda, AndroidManifest.xml'de belirtmeniz gerekir.

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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MyCreativityActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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


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


</application>


3
b1 = (Button) findViewById(R.id.click_me);
        b1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Intent i = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(i);

            }
        });

Menifest dosyanıza SecondActivity sınıfını ekleyin.
Hiren Patel

Görünüm türündeki setOnClickListener (View.OnClickListener) yöntemi bağımsız değişkenler (yeni OnClickListener () {}) için geçerli değil mi?


2

Manifest'te

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

Java Kodu'nda niyet kodunu yerleştirmeniz gereken yer

startActivity(new Intent(CurrentActivity.this, OrderScreen.class);

1
İçinde bir kapanış braketi eksik startActivityBu şekilde olmalı:startActivity(new Intent(CurrentActivity.this, OrderScreen.class));
Garip

1

aramayı yapan görünümün bağlamını kullanabilirsiniz. Misal:

Button orderButton = (Button)findViewById(R.id.order);

orderButton.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View view) {
    Intent intent = new Intent(/*FirstActivity.this*/ view.getContext(), OrderScreen.class);
    startActivity(intent);
  }

});

MainActivity? Tipi için getContext () yöntemi tanımsız.

1
Intent i = new Intent("com.Android.SubActivity");
startActivity(i);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.