简体   繁体   English

在Android中切换三个活动?

[英]Switching between three activities in Android?

I have a scenario of three activities namely: 我有三个活动的场景,即:

  1. MainActivity 主要活动
  2. DerivedActivity DerivedActivity
  3. ThirdPage ThirdPage

I want to navigate between 1st to second and to third. 我想在第一到第二和第三之间导航。

here is my Manifest (AndroidManifest.xml) 这是我的清单 (AndroidManifest.xml)

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

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
        <activity android:name=".DerivedActivity"></activity>
        <activity android:name=".ThirdPage"></activity>
    </application>

</manifest>

Now the Main Activity(MainActivity.java) 现在的主要活动(MainActivity.java)

package org.example.implicitexplicit;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void impliex(View v)
{
    Intent intent=new Intent(this, DerivedActivity.class);
    startActivity(intent);

}


@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 boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}

The 2nd(DerivedActivity.java) 第二个(DerivedActivity.java)

package org.example.implicitexplicit;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
public class DerivedActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.derived_activity);
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

private void explicit(View v) {
        Intent intent = new Intent(this, ThirdPage.class);
        startActivity(intent);
    }

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId()==android.R.id.home) {
        finish();
    }
    return super.onOptionsItemSelected(item);
}
}

and the Last Activity(ThirdPage.java) 和最后一个活动(ThirdPage.java)

package org.example.implicitexplicit;
import android.app.Activity;
import android.os.Bundle;
public class ThirdPage extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.thirdpage_activity);
    }
}

In the DerivedActivity.java I am getting an warning 在DerivedActivity.java中,我收到警告

The method explicit(View) from the type DerivedActivity is never used locally

The xml files are as follows xml文件如下

activity_main.xml activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/eia"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher" 
    android:contentDescription="@string/imgalt"/>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/desc"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/clickme" 
    android:onClick="impliex"/>

</LinearLayout>

derived_activity.xml derived_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/derivedText"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/clickme"
    android:onClick="explicit"
     />

</LinearLayout>

thirdpage_activity.xml thirdpage_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/thirdpageText"
    android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

Error : 错误:

java.lang.IllegalStateException: Could not find a method explicit(View) in the activity class org.example.implicitexplicit.DerivedActivity for onClick handler on view class android.widget.Button with id 'button1'

Change private void explicit to private void explicit更改为

public void explicit(View v) {
        Intent intent = new Intent(this, ThirdPage.class);
        startActivity(intent);
    }

您的explicit方法是private您必须将该方法public以用作clickListener

change access modifire of that method private to public 将该方法的访问修改更改为private public

public void explicit(View v) {
    Intent intent = new Intent(this, ThirdPage.class);
    startActivity(intent);
}

you declare your method as private but it should be public first. 你声明你的方法是私有的,但它应该首先公开。 second your exception shows that the name of the method is explicitURl but actually it is explicit(View) 第二个你的异常显示方法的名称是explicitURl但实际上它是显式的(View)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM