如何在按钮点击第三个活动从第一次活动去次活动从二上按一下按钮在安卓
嗨,大家好,我使用我的Android应用3个活动,是如何在按钮点击第三个活动从第一次活动去次活动从二上按一下按钮在安卓
1.main_activity
2。 Secondactivity
3.Third活动
我面临的问题,当我试图通过对主要活动点击一个按钮,打开与主活动第二个活动。该应用程序崩溃和没有作用
我还需要当打开
由于我是新到Android编码通过点击一个按钮打开我第三个活动上次活动我无法理解我在编码中做错了。我想寻求有关信息,并还需要任何一个谁可以帮我这个
在此先感谢
下面是完整的代码和错误我得到的是这种
07-27 12:13:51.887 23039-23039/com.example.mohammadzakriya.tech_bgkapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mohammadzakriya.tech_bgkapp, PID: 23039
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mohammadzakriya.tech_bgkapp/com.example.mohammadzakriya.tech_bgkapp.Secondactivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.example.mohammadzakriya.tech_bgkapp.Secondactivity.OnclickButtonListener(Secondactivity.java:24)
at com.example.mohammadzakriya.tech_bgkapp.Secondactivity.onCreate(Secondactivity.java:19)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method) "**
at java.lang.reflect.Method.invoke(Native Method)
这里就是Android主要Activity.java文件:
package com.example.mohammadzakriya.tech_bgkapp;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity{
public static Button button_smb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OnclickButtonListener();
}
public void OnclickButtonListener(){
button_smb =(Button)findViewById(R.id.button);
button_smb.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("com.example.mohammadzakriya.tech_bgkapp.Secondactivity");
startActivity(intent);
}
}
);
}
}
这里是二Activity.java文件:
package com.example.mohammadzakriya.tech_bgkapp;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Secondactivity extends Activity{
public static Button button_smb1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secondactivity);
OnclickButtonListener();
}
public void OnclickButtonListener(){
button_smb1 =(Button)findViewById(R.id.button);
button_smb1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myintent = new Intent("com.example.mohammadzakriya.tech_bgkapp.ThirdActivity");
startActivity(myintent);
}
}
);
}
}
主要活动的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mohammadzakriya.tech_bgkapp.MainActivity"
android:background="@drawable/frontpic">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click to proceed"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:textStyle="bold|italic|normal"
android:textSize="19dp"
android:background="#d55b26f8"
android:textColor="#e2e0e0" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text=" WELCOME TO BAGALKOT APP"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textStyle="bold|italic"
android:layout_marginTop="50dp"
android:textSize="25dp"
android:background="#fbe47d0e"
android:textColor="#e2e0e0" />
</RelativeLayout>
次活动的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mohammadzakriya.tech_bgkapp.Secondactivity"
android:background="#eb5d16ea">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ELECTRONICS"
android:id="@+id/button2"
android:layout_marginTop="42dp"
android:textStyle="bold|italic|normal"
android:background="#eec16d0d"
android:layout_below="@+id/textView2"
android:layout_alignParentStart="true"
android:textSize="18dp"
android:textColor="#e2e0e0"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text=" SELECT THE CATEGORY"
android:id="@+id/textView2"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/button2"
android:layout_marginTop="15dp"
android:textStyle="bold|italic|"
android:background="#fbe47d0e"
android:textColor="#e2e0e0"/>
</RelativeLayout>
Android清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mohammadzakriya.tech_bgkapp">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
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=".Secondactivity"
android:label="Tech-Bgk App">
<intent-filter>
<action android:name="com.example.mohammadzakriya.tech_bgkapp.Secondactivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".ThirdActivity"
android:label="Tech-Bgk App">
<intent-filter>
<action android:name="com.example.mohammadzakriya.tech_bgkapp.ThirdActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
使用此:
Intent intent = new Intent(MainActivity.this, Secondactivity.class);
startActivity(intent);
根据我的经验,这是通过代码从一个Activity
移动到另一个Activity
的方式。
还有一件事,那就是添加一个onClickListener()
奇怪的是,如果它只是一个简单的“第一个活动到第二活动”你应该直接申报按钮,设置onClickListener()
Button button_smb =(Button)findViewById(R.id.button);
button_smb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(this, Secondactivity.class);
startActivity(intent);
}
}
低于更换代码在您的mainActivity文件中。
button_smb.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,Secondactivity.class);
startActivity(intent);
}
}
);
这里'this'将引用'OnClickListener'对象。所以它不会工作,我认为。 –
完成编辑.. –
尝试像,
Intent intent = new Intent(MainActivity.this, Secondactivity.class);
startActivity(intent);
这应该可以帮助你
请码尝试像下面
在MainActivity按钮点击进入SecondActivity
@Override
public void onClick(View view) {
Intent myintent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(myintent);
}
一个在SecondActivity d按钮点击进入ThirdActivity
@Override
public void onClick(View view) {
Intent myintent = new Intent(SecondActivity.this, ThirdActivity.class);
startActivity(myintent);
}
编辑
一切都在你的代码是除了Secondactivity的button_smb1
初始化罚款。
请不要为
button_smb1 =(Button)findViewById(R.id.button2);
在Secondactivity的变化。
现在它会工作。没有必要改变以外的任何东西。
完成上述编辑,但无法解决错误。我需要在应用编辑之前在Android清单文件中进行更改吗? –
请在第二个活动中做到这一点'button_smb1 =(Button)findViewById(R.id.button2);'。现在它会工作。没有必要改变以外的任何东西。 –
感谢它的工作。 –
更改下面的代码
主要活动于次活动
Intent intent = new Intent(this, Secondactivity.class);
startActivity(intent);
次活动以第三个活动
Intent intent = new Intent(this, ThirdActivity.class);
startActivity(intent);
为了避免新的,我更喜欢用这个计算策略:
public class MyActivity extends AppCompactActivity implents View.OnClickListener{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
button.setOnClickListener(this);
...
}
@Override
public void onClick(View view) {
Intent i;
switch (view.getId()) {
case R.id.button1:
i = new Intent(this, SecondActivity.class);
i.putExtra("extra", 0); //if you want pass some info to other activity
startActivity(i);
break;
default:
break;
}
}
这样您可以在一个功能处理更多的onclick,通过组件的id
开关我觉得这里'this'被引用'OnClickListener'对象,而不是引用'Activity'。所以我认为它会给你一个错误,或者它不会给你想要的输出。 –
Ohooo我几乎总是忘记,对不起,编辑它 –
这就是为什么总是尝试使用一个上下文对象,它会让你安全。 –