[英]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.