简体   繁体   English

如何制作一个打开另一个活动的按钮

[英]How to make a Button that opens another Activity

I've created a activity called Activity1 and I want to have a button in its layout to launch the MainActivity.我创建了一个名为 Activity1 的活动,我想在其布局中有一个按钮来启动 MainActivity。 But when I do it, it says cannot resolve setOnClickListener.但是当我这样做时,它说无法解析 setOnClickListener。 Here is my Activity1:这是我的活动1:

package br.raphael.detector;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;

public class Activity1 extends Activity {



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

    Button Bdetectar = (Button) findViewById(R.id.buttondetectar);
    Bdetectar.setOnClickListener(new OnClickListener(){

        public void onClick(View v){

            Intent intent = new Intent (v.getContext(), MainActivity.class);
            startActivityForResult(intent, 0);
        }
    });

}

The beggining of the MainActivity: MainActivity的开始:

package br.raphael.detector;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;

import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.imgproc.Imgproc;

import android.R.integer;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.hardware.Camera.Size;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.SubMenu;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import br.raphael.extended.AdapterTwoLinesImage;
import br.raphael.extended.ViewExtended;
import br.raphael.extended.CameraBridgeViewBaseExtended.CvCameraViewFrame;
import br.raphael.extended.CameraBridgeViewBaseExtended.CvCameraViewListener2;


public class MainActivity extends Activity implements CvCameraViewListener2, OnTouchListener, OnClickListener, OnItemClickListener {


    //Variaveis Basicas - Basic Variables
    private static final String TAG = "Main Activity: ";
    private ViewExtended CameraView;
    private Handler mainHandler;
    //Loading para FullDetection
    private LinearLayout Loading;
    //Botoes - Buttons
    private Button FullDetection;
    private Button CleanList;
    //Menu de Opcoes - Options Menu
    private List<Size> mResolutionList;
    private MenuItem[] mEffectMenuItems;
    private SubMenu mColorEffectsMenu;
    private MenuItem[] mResolutionMenuItems;
    private SubMenu mResolutionMenu;
    private SubMenu Mode;
    private MenuItem[] ModeItens;
    private SubMenu Debug;
    private MenuItem[] DebugItens;
    //Personagens(Pre-Carregamento) - Characters(Pre-Load)
    private SimpsonDetector previousDetector;
    private Mat homer;
    private Mat homer2;
    private Mat marge;
    private List<Mat> preLoadedImages;
    private boolean[] DetectedChars;
    //Controle de Thread
    private boolean[] threadControl;
    //Outros
    //Others
    private TextView Status;
    private String ModeValue;
    private int teste1 = 1, teste2 = 1;
    private boolean debug;
    //Lista de Objetos
    //Object List
    private ListView DetectedObj;
    private List<String> Objetos;
    private ArrayList<ObjectList> personal;
    private boolean[] objControl;



    public MainActivity() {
        Log.i(TAG, "Instantiated new " + this.getClass());
    }

    /**
     * Chamado quando a Activity  criada.
     * Called when activity is created
     * */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.i(TAG, "called onCreate");
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        setContentView(R.layout.activity_main);

        CameraView = (ViewExtended) findViewById(R.id.ExtendedSurfaceView);

        CameraView.setVisibility(SurfaceView.VISIBLE);

        CameraView.setCvCameraViewListener(this);

        Loading = (LinearLayout) findViewById(R.id.Loading);
        Loading.setVisibility(View.GONE);

        Status = (TextView) findViewById(R.id.text_status);
        Status.setOnClickListener(this);

        FullDetection = (Button) findViewById(R.id.fullDetection);
        FullDetection.setOnClickListener(this);

        CleanList = (Button) findViewById(R.id.CleanList);
        CleanList.setOnClickListener(this);

        DetectedObj = (ListView) findViewById(R.id.DetectedObjects);
        DetectedObj.setOnItemClickListener(this);
        personal = new ArrayList<ObjectList>();
        objControl = new boolean[30];

        debug = false;

And the AndroidManifest:和 AndroidManifest:

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

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

    <uses-permission android:name="android.permission.CAMERA" />

    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.autofocus"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.front"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.front.autofocus"
        android:required="false" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_donuts"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
        <activity
            android:name=".Activity1"
            android:label="@string/title_activity_1" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape" >
        </activity>
    </application>

</manifest>

You closed the onCreate() too early, so you're out of the scope of the function.您过早关闭了 onCreate(),因此您超出了函数的范围。
Move the button declartion and setOnClickListener into onCreate() and it will work.将按钮声明和 setOnClickListener 移动到 onCreate() 中,它将起作用。

package br.raphael.detector;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;

public class Activity1 extends Activity {

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

        Button Bdetectar = (Button) findViewById(R.id.buttondetectar);
        Bdetectar.setOnClickListener(new OnClickListener() {
            public void onClick(View v){

                Intent intent = new Intent (v.getContext(), MainActivity.class);
                startActivityForResult(intent, 0);
            }
        });
    }
}

Instead of setOnClickListener set in the xml of your Button:而不是在您的 Button 的 xml 中设置的 setOnClickListener :

android:onClick="onClick"

like:喜欢:

<Button android:id="@+id/mybutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click me!"
        android:onClick="onClick" />

Now you can simply use the public void onClick(View v) in your Activity without the Listener.现在你可以在你的活动中简单地使用public void onClick(View v)而没有监听器。

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

相关问题 你如何在 android 中创建一个按钮来打开一个新的活动,这个活动不仅仅是一个默认活动,它是一个自定义活动 - How do you make a button in android that opens a new activity and this activity is not just a default activity its a custom one 如何在另一个活动中引用按钮? - How to make reference to a button in another activity? 创建一个基于按钮活动打开另一个片段的android片段 - Creating an android fragment that opens another fragment based on button activity 当活动达到数组限制时,“下一步”按钮将打开另一个活动 - Next button opens another activity when its reaches the array limit 在按下按钮时启动另一个活动时,如何使按钮播放声音? - How to make a button play a sound as it launches another activity when pressed? 如何传递按钮意图在另一个活动中制作可绘制的变色? - how to pass button intent to make drawable change color in another activity? 如何使按钮在另一个活动中发生的成功事件上不可见 - How to make a button visible frominvisible on a successful event happend in another activity 无法使按钮在其他活动中可见 - not able to make a button visible from another activity 如何禁用另一个活动中的按钮? - How to disable button in another activity? 如何在打开JFrame的Java Applet中创建一个按钮? - How do I make a button in a Java Applet that opens a JFrame?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM