有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法实例化活动:类com。pz。媒体愤怒。ChatDialogActivity没有零参数构造函数

“错误和聊天活动”对话框如下所示

04-09 09:03:23.509 2722-2722/com.pz.mediatonmessanger E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.pz.mediatonmessanger, PID: 2722
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.pz.mediatonmessanger/com.pz.mediatonmessanger.ChatDialogActivity}: java.lang.InstantiationException: class com.pz.mediatonmessanger.ChatDialogActivity has no zero argument constructor
    at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
    at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at 安卓.app.ActivityThread.access$800(ActivityThread.java:144)
    at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at 安卓.os.Handler.dispatchMessage(Handler.java:102)
    at 安卓.os.Looper.loop(Looper.java:135)
    at 安卓.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    Caused by: java.lang.InstantiationException: class com.pz.mediatonmessanger.ChatDialogActivity has no zero argument constructor
    at java.lang.Class.newInstance(Class.java:1563)
    at 安卓.app.Instrumentation.newActivity(Instrumentation.java:1065)
    at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
    at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at 安卓.app.ActivityThread.access$800(ActivityThread.java:144)
    at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at 安卓.os.Handler.dispatchMessage(Handler.java:102)
    at 安卓.os.Looper.loop(Looper.java:135)
    at 安卓.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    Caused by: java.lang.NoSuchMethodException: <init> []
    at java.lang.Class.getConstructor(Class.java:531)
    at java.lang.Class.getDeclaredConstructor(Class.java:510)
    at java.lang.Class.newInstance(Class.java:1561)
    at 安卓.app.Instrumentation.newActivity(Instrumentation.java:1065)
    at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
    at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at 安卓.app.ActivityThread.access$800(ActivityThread.java:144)
    at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at 安卓.os.Handler.dispatchMessage(Handler.java:102)
    at 安卓.os.Looper.loop(Looper.java:135)
    at 安卓.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:694)

代码

package com.pz.mediatonmessanger;

import 安卓.app.ProgressDialog;
import 安卓.content.Intent;
import 安卓.support.design.widget.FloatingActionButton;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.util.Log;
import 安卓.view.View;
import 安卓.widget.ListView;

import com.pz.mediatonmessanger.Adapter.ChatDialogsAdapter;
import com.quickblox.auth.QBAuth;
import com.quickblox.auth.session.BaseService;
import com.quickblox.auth.session.QBSession;
import com.quickblox.chat.QBChatService;
import com.quickblox.chat.QBRestChatService;
import com.quickblox.chat.model.QBChatDialog;
import com.quickblox.core.QBEntityCallback;
import com.quickblox.core.exception.BaseServiceException;
import com.quickblox.core.exception.QBResponseException;
import com.quickblox.core.request.QBRequestBuilder;
import com.quickblox.core.request.QBRequestGetBuilder;
import com.quickblox.users.model.QBUser;

import java.util.ArrayList;




public class ChatDialogActivity extends AppCompatActivity {

    FloatingActionButton floatingActionButton;
    ListView lstChatDialogs;


    public ChatDialogActivity(FloatingActionButton floatingActionButton) {
        this.floatingActionButton = floatingActionButton;
    }

    public ChatDialogActivity(ListView lstChatDialogs) {
        this.lstChatDialogs = lstChatDialogs;
    }

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

        createSessionForChat();

        lstChatDialogs = (ListView)findViewById(R.id.lstChatDialogs);

        loadChatDialogs();



        floatingActionButton = (FloatingActionButton) findViewById(R.id.chatdialog_adduser);

        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent  = new Intent(ChatDialogActivity.this, ListUsersActivity.class );
                startActivity(intent);
            }
        });
    }

    private void loadChatDialogs() {

        QBRequestGetBuilder requestBuilder = new QBRequestGetBuilder();
        requestBuilder.setLimit(100);

        QBRestChatService.getChatDialogs(null,requestBuilder).performAsync(new QBEntityCallback<ArrayList<QBChatDialog>>() {
            @Override
            public void onSuccess(ArrayList<QBChatDialog> qbChatDialogs, Bundle bundle) {

                //Kod
                ChatDialogsAdapter adapter = new ChatDialogsAdapter(getBaseContext(),qbChatDialogs);
                lstChatDialogs.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onError(QBResponseException e) {
                    Log.e("Błąd",e.getMessage());
            }
        });
    }

    private void createSessionForChat() {
        final ProgressDialog mDialog = new ProgressDialog(ChatDialogActivity.this);
        mDialog.setMessage("Ładowanie...");
        mDialog.setCanceledOnTouchOutside(false);
        mDialog.show();

        String user,password;
        user = getIntent().getStringExtra("user");
        password = getIntent().getStringExtra("password");

        final QBUser qbUser = new QBUser(user,password);
        QBAuth.createSession(qbUser).performAsync(new QBEntityCallback<QBSession>() {
            @Override
            public void onSuccess(QBSession qbSession, Bundle bundle) {
                qbUser.setId(qbSession.getUserId());
                try {
                    qbUser.setPassword(BaseService.getBaseService().getToken());
                } catch (BaseServiceException e) {
                    e.printStackTrace();
                }

                QBChatService.getInstance().login(qbUser, new QBEntityCallback() {
                    @Override
                    public void onSuccess(Object o, Bundle bundle) {
                        mDialog.dismiss();
                    }

                    @Override
                    public void onError(QBResponseException e) {
                        Log.e("Błąd",""+e.getMessage());
                    }
                });
            }

            @Override
            public void onError(QBResponseException e) {

            }
        });

    }
}

共 (1) 个答案

  1. # 1 楼答案

    活动在Android中没有构造函数,您不能像创建其他类那样创建它们。它们由系统实例化,您所需要做的就是用context.startActivity(intent)启动它们

    删除此活动中的所有构造函数,并使用findViewById获取对视图的引用,您应该不会有问题