登录后使用意图打开新活动后应用程序崩溃

时间:2017-08-13 03:36:41

标签: java android android-intent

我一直试图让我的应用程序在登录后重定向到一个新的活动,我已经尝试了几乎一切都无济于事。我也在论坛上检查了所有相关的答案,但似乎没有任何效果。任何帮助将不胜感激。

登录活动代码:

@Override
public void onSuccess(@NonNull final Credentials credentials) {
Intent i = new Intent(MainActivity.this, testactivity.class);
startActivity(i);

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.auth0.samples">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="@string/auth0_domain"
                    android:pathPrefix="/android/com.auth0.samples/callback"
                    android:scheme="demo" />
            </intent-filter>
        </activity>
        <activity android:name="materialtabs.activity.SimpleTabsActivity" />
        <activity android:name=".testactivity"></activity>
    </application>
</manifest>

Test.java:

     package com.auth0.samples;

 import android.support.design.widget.TabLayout;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.support.v7.widget.Toolbar;

 import com.auth0.samples.fragments.OneFragment;
 import com.auth0.samples.fragments.ThreeFragment;
 import com.auth0.samples.fragments.TwoFragment;

 import java.util.ArrayList;
 import java.util.List;

 public class test extends AppCompatActivity {

     private Toolbar toolbar;
     private TabLayout tabLayout;
     private ViewPager viewPager;

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

         toolbar = (Toolbar) findViewById(R.id.toolbar);
         setSupportActionBar(toolbar);

         viewPager = (ViewPager) findViewById(R.id.viewpager);
         setupViewPager(viewPager);

         tabLayout = (TabLayout) findViewById(R.id.tabs);
         tabLayout.setupWithViewPager(viewPager);
     }

     private void setupViewPager(ViewPager viewPager) {
         ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
         adapter.addFragment(new OneFragment(), "Notices");
         adapter.addFragment(new TwoFragment(), "Timetable");
         adapter.addFragment(new ThreeFragment(), "Homework");
         viewPager.setAdapter(adapter);
     }

     class ViewPagerAdapter extends FragmentPagerAdapter {
         private final List<Fragment> mFragmentList = new ArrayList<>();
         private final List<String> mFragmentTitleList = new ArrayList<>();

         public ViewPagerAdapter(FragmentManager manager) {
             super(manager);
         }

         @Override
         public Fragment getItem(int position) {
             return mFragmentList.get(position);
         }

         @Override
         public int getCount() {
             return mFragmentList.size();
         }

         public void addFragment(Fragment fragment, String title) {
             mFragmentList.add(fragment);
             mFragmentTitleList.add(title);
         }

         @Override
         public CharSequence getPageTitle(int position) {
             return mFragmentTitleList.get(position);
         }
     }
 }

进一步的故障排除后,我注意到应用程序将重定向到空白活动,因此必须在test.java中调用某些东西,这会搞乱一些事情。

1 个答案:

答案 0 :(得分:0)

欢迎,首先提示一些:发布错误日志和更多相关代码。在这个例子中,在什么上下文中调用了onSuccess(...)。

现在回答你的问题,我认为它失败了,因为你的意图代码在onSuccess调用中。您是否通过将startActivity移动到onSuccess之外来尝试调试?让我们尝试最简单的测试,只需将该意图代码移动到MainActivity的onCreate即可。这应该使你的主要活动立即进入测试活动。如果您的应用不这样做,则表示testactivity.java文件中存在错误。如果是,则表示您的onsuccess()存在问题。

通过如上所述的简单调试,您可以轻松地隔离真正的问题,从而解决问题。以小增量步骤开始调试!如果您还没有,请参阅here以获取有关使用意图开始活动的更多详细信息。

编辑:谢谢我看到了新代码,所以你的测试类名为test.java而不是testactivity.java?然后在你的意图中,目标应该是test.class。