无法从android studio的第一个活动中打开第二个活动
以下是清单文件。无法从android studio的第一个活动中打开第二个活动
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.paidquery.mobile">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".LoginActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SignUpActivity"
android:label="@string/title_activity_sign_up"
android:theme="@style/AppTheme.NoActionBar">
</activity>
</application>
</manifest>
这是登录活动的java文件,我在哪里写上点击功能,这也是我的第一个活动。我看到两个控制台登录到我的控制台,但每当点击注册按钮时,应用程序就会自行关闭,并在控制台中发出错误,表示找不到注册活动。
package com.paidquery.mobile;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
public class LoginActivity extends AppCompatActivity{
public static final String LOGIN_TAG = "login_msg";
private static Button sign_up_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
onClickSignUpBtnListner();
Log.i(LOGIN_TAG, "Login onCreate function");
}
/** Sign up button click function */
public void onClickSignUpBtnListner() {
Log.i(LOGIN_TAG,"In onClickSignUpBtnListner call");
sign_up_btn = (Button)findViewById(R.id.signUpBtn);
sign_up_btn.setOnClickListener(
new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this, SignUpActivity.class);
startActivity(intent);
}
}
);
}
}
这里是最新的控制台日志错误,当我点击注册按钮的登录活动。
01-13 16:25:18.844 28104-28104/com.paidquery.mobile E/AndroidRuntime:致命异常:主 工艺:com.paidquery.mobile,PID:28104 了java.lang.RuntimeException:无法开始活动ComponentInfo {com.paidquery.mobile/com.paidquery.mobile.SignUpActivity}:java.lang.NullPointerException:尝试调用虚拟方法'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()'上的空对象引用 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在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) 在android.app.ActivityThread.main(ActivityThread.java:5417) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit .java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.lang.NullPointerException:试图调用虚拟方法'java.lang.CharSequence android.support。 v7.widget.Toolbar.getTitle()'的空对象ref在android.support.v7.widget.ToolbarWidgetWrapper(ToolbarWidgetWrapper.java:98) at android.support.v7.widget.ToolbarWidgetWrapper。(ToolbarWidgetWrapper.java:91) at android.support.v7.app.ToolbarActionBar (ToolbarActionBar.java:73) 在android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:205) 在android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:99) 在com.paidquery.mobile.SignUpActivity.onCreate(SignUpActivity.java:17) at android.app.Activity.performCreate(Activity.java:6237) at android.app.Instrumentation.callA ctivityOnCreate(Instrumentation.java:1107) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在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 (Native Method) (android)在com.android。internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
正如在评论你的OP说,我们需要码。
然而,这是从活动开始活动最常见的方式。
假设如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button sign_up_btn = (Button) findViewById(R.id.sign_up_btn);
sign_up_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// start activity sign up here :
Intent intent = new Intent(MainActivity.this, SignUpActivity.class);
startActivity(intent);
}
}
}
然而,也如评论所说,你必须声明你的的AndroidManifest.xml文件中的每个活动。
里面的<application> </application>
范围,您SignUpActivity如下:
<activity android:name="SignUpActivity"/>
确保你写包含此活动,如果你把它放在一个特定的包的包的名称。无需写下您的应用程序包,因为它应该在清单中声明为好。
同时也要确保有您的电话活动中适当的进口(在我的例子中,MainActivity
),而Android Studio将会帮你。
[更新1]
鉴于你的崩溃日志和评论,错误的是,你的工具栏您SignUpActivity内不存在,所以当你试图找到它返回空。
这是因为在你的AndroidManifest文件中声明你的SignUpActivity的他们被设置为删除工具栏:
<activity [...] android:theme="@style/AppTheme.NoActionBar"> </activity>
因此,你应该使用另一个主题。要做到这一点,修改styles.xml文件,其中AppTheme
定义和改变这样的事情:
<style name="AppTheme" parent="Base.Theme.AppCompat.DarkActionBar">
,瞧你现在可以在你的SignUpActivity使用工具栏。
正如我的答案中所述:1)如果相同,则无需指定包含** SignUpActivity **的软件包正如您的** AndroidManifest **开头所述。请删除'“com.paidquery.mobile”'。 2)你创建** Intent **的方式用于行动,这不是你想要做的事情。尝试如下:'Intent intent = new Intent(LoginActivity.this,SignUpActivity.class)'。它应该如我的答案中所述那样工作。 – Mackovich
我已经更新了主文章机智当前代码。不工作,错误:无法启动活动ComponentInfo {com.paidquery.mobile/com.paidquery.mobile.SignUpActivity} –
您能发布完整的错误堆栈日志吗? – Mackovich
请仔细阅读Intent构造。
您使用Intent (String action)(new Intent("com.paidquery.mobile.SignUpActivity")
),开始你的第二个活动。
Androdi会认为com.paidquery.mobile.SignUpActivity
是意图操作过滤器,它在manifest.xml文件中不可用。
你的代码更改为:
Intent intent = new Intent(LoginActivity.this, SignUpActivity.class);
startActivity(intent);
现在,在控制台中出现此错误。 –
无法启动活动ComponentInfo {com.paidquery.mobile/com.paidquery.mobile.SignUpActivity} –
尝试为清单中的SignUpActivity移除
它的崩溃,因为SignUpActivity.java
号线17。
我认为你正在尝试设置自定义actionbar
/toolbar
但在你的第二个xml(对于SignUpActivity)中没有提及。
检查manifest.xml。在其中声明SignUpActivity。 – Shane
是你的清单包含'SignUpActivity'活动? –
下面是清单文件。 –