【问题标题】:Adding a new project to existing project android application (How to move to next activity)将新项目添加到现有项目 android 应用程序(如何移动到下一个活动)
【发布时间】:2019-02-13 22:02:03
【问题描述】:

我只在 YouTube 和互联网上观看和阅读过教程,但我需要具体说明。 (还是个学生,只是自学android开发。)

我找到了一个源代码,我想在实验应用程序中作为参考:https://github.com/vjycool97/Zomato-Search-API(感谢所有者)

我想尝试在点击欢迎屏幕上的“开始使用”按钮后显示它,但按钮意图对我不起作用。应用程序崩溃了。

public class WelcomeScreen extends AppCompatActivity {

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

    Button gsbtn=(Button)findViewById(R.id.getstartedbtn);
    gsbtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i=new Intent(getApplicationContext(),MainActivity.class);
            startActivity(i);
        }
    });

更新 Logcat

java.lang.NullPointerException: Attempt to invoke interface method 'int android.database.Cursor.getCount()' on a null object reference
    at e.alasse.foodiary.views.activities.MainActivity.onLoadFinished(MainActivity.java:382)
    at e.alasse.foodiary.views.activities.MainActivity.onLoadFinished(MainActivity.java:66)
    at android.support.v4.app.LoaderManagerImpl$LoaderObserver.onChanged(LoaderManagerImpl.java:250)
    at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
    at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
    at android.arch.lifecycle.LiveData.setValue(LiveData.java:282)
    at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
    at android.support.v4.app.LoaderManagerImpl$LoaderInfo.setValue(LoaderManagerImpl.java:189)
    at android.support.v4.app.LoaderManagerImpl$LoaderInfo.onLoadComplete(LoaderManagerImpl.java:174)
    at android.support.v4.content.Loader.deliverResult(Loader.java:132)
    at android.support.v4.content.CursorLoader.deliverResult(CursorLoader.java:109)
    at android.support.v4.content.CursorLoader.deliverResult(CursorLoader.java:41)
    at android.support.v4.content.AsyncTaskLoader.dispatchOnLoadComplete(AsyncTaskLoader.java:258)
    at android.support.v4.content.AsyncTaskLoader$LoadTask.onPostExecute(AsyncTaskLoader.java:83)
    at android.support.v4.content.ModernAsyncTask.finish(ModernAsyncTask.java:490)
    at android.support.v4.content.ModernAsyncTask$InternalHandler.handleMessage(ModernAsyncTask.java:507)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

编辑 2:

Android 清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="e.alasse.foodiary">
<uses-permission android:name="android.permission.INTERNET" />

<application

    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/icon2"
    android:roundIcon="@mipmap/icon2"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".WelcomeScreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <provider
        android:name="e.alasse.foodiary.providers.RestaurantContentProvider"
        android:authorities="e.alasse.providers.RestaurantContentProvider"
        android:exported="false" />
    <activity android:name=".views.activities.MainActivity"></activity>
    <activity android:name=".ImagesActivity" />
    <activity android:name=".UploadActivity" />
</application>

更新

开始按钮移到下一个活动,但之后又崩溃了。

我有这个错误

 java.lang.RuntimeException: An error occurred while executing 
doInBackground()

更新版本 https://drive.google.com/file/d/1udjQcT02b8sDTDA3udWDbx96X3rpCssJ/view?usp=sharing

【问题讨论】:

  • 你能发布错误吗?
  • 您好,请发布您的错误,您似乎没有在 Manifest 文件中定义 MainActivity。
  • 尝试使用 Intent i=new Intent(package context: WelcomeScreen.this,MainActivity.class);
  • 我编辑了它并添加了 logcat。
  • 尝试将getApplicationContext() 替换为WelcomScreen.this 看看是否有效?

标签: java android android-layout android-studio android-fragments


【解决方案1】:

MainActivity 类的onLoadFinished 方法中,你可以看到:

RestaurantInfoModel model = MyApplication.getGsonInstance().fromJson(cursor.getString(dataIndex), RestaurantInfoModel.class);

调用MyApplication的方法getGsonInstance(),为了确保这个方法成功执行,你应该在你的AndroidManifest.xml中加入这一行:

android:name=".MyApplication"

自定义应用的详细信息是here

【讨论】:

    【解决方案2】:

    首先在您的清单中,您必须使用name 属性声明您的应用程序类。 在清单中添加类似的内容:

    <application android:name=".MyApplication"

    MainActivity 类中的getCityId() 方法抛出空指针异常,因为您没有声明应用程序类,所以MyApplication.getContext()null

    我添加了上面的行,一切正常。

    【讨论】:

    • 谢谢先生。我在清单上添加了`android:name=".MyApplication"`。它在按下开始后工作,它加载了一段时间然后崩溃。我没有得到getCityId() 部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多