什么是错误,应用程序崩溃

时间:2015-07-21 13:13:48

标签: android

这里是主要活动代码.......................................... .................................................. ..........

  package com.josephvarkey996gmail.test1;
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.ImageButton;

    import com.parse.ParseAnalytics;
    import com.parse.ParseUser;

    public abstract class MainActivity extends AppCompatActivity {

        public static final String TAG = MainActivity.class.getSimpleName();
     public ImageButton imgbutton;
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            ParseAnalytics.trackAppOpenedInBackground(getIntent());


            ParseUser currentUser = ParseUser.getCurrentUser();
            if(currentUser==null) {
                navigatetologin();
            }
            if(currentUser!=null)
            {
                Log.i(TAG ,currentUser.getUsername());


            }
            // Enable Local Datastore.
    imgbutton= (ImageButton)findViewById(R.id.frnd);
            imgbutton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(MainActivity.this, Editfriends.class);
                    startActivity(intent);
                }
            });

        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();

            //noinspection SimplifiableIfStatement
            if (id == R.id.action_logout) {
               ParseUser.logOut();
                navigatetologin();
            }
            else if (id==R.id.action_edit_friends){
                Intent intent = new Intent(this, Editfriends.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(intent);
            }

            return super.onOptionsItemSelected(item);
        }

        private void navigatetologin() {
            Intent intent = new Intent(this, LoginActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
        }
    }

这是Editfriend活动.........................

package com.josephvarkey996gmail.test1;

import android.app.ListActivity;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.ArrayAdapter;

import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseQuery;
import com.parse.ParseUser;

import java.util.List;


public class Editfriends extends ListActivity {
public  static final String Tag=Editfriends.class.getSimpleName();
    protected List<ParseUser> mUser;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.activity_editfriends);
    }

    @Override
    protected void onResume() {
        super.onResume();
        setProgressBarIndeterminateVisibility(true);
        ParseQuery<ParseUser> query= ParseUser.getQuery();
        query.orderByAscending(ParseConstants.key_Username);
        query.setLimit(1000);
        query.findInBackground(new FindCallback<ParseUser>() {
            @Override
            public void done(List<ParseUser> users, ParseException e) {
                setProgressBarIndeterminateVisibility(true);
                if (e== null){
                      mUser=users;
                    String[] username = new String[mUser.size()];
                    int i=0;
                    for(ParseUser user:mUser){
                        username[i]=user.getUsername();
                        i++;
                    }
                   ArrayAdapter<String> adapter = new ArrayAdapter<>(Editfriends.this,android.R.layout.simple_list_item_checked,username);
                    setListAdapter(adapter);
                }
                else
                {
                    Log.e(Tag,e.getMessage());
                    AlertDialog.Builder builder=new AlertDialog.Builder(Editfriends.this);
                    builder.setMessage(e.getMessage()).setTitle(R.string.error_title).setPositiveButton(android.R.string.ok, null);
                    AlertDialog dialog = builder.create();
                    dialog.show();
                }
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_editfriends, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

HERE是logcat,我是新手。所以不能理解wat在logcat中说的 ........................

 Process: com.josephvarkey996gmail.test1, PID: 2736
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.josephvarkey996gmail.test1/com.josephvarkey996gmail.test1.MainActivity}: java.lang.InstantiationException: class com.josephvarkey996gmail.test1.MainActivity cannot be instantiated
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.InstantiationException: class com.josephvarkey996gmail.test1.MainActivity cannot be instantiated
            at java.lang.Class.newInstance(Class.java:1587)
            at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
07-21 18:23:09.419    2736-2748/com.josephvarkey996gmail.test1 I/art﹕ Background sticky concurrent mark sweep GC freed 3678(165KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 1170KB/1170KB, paused 7.592ms total 95.745ms

2 个答案:

答案 0 :(得分:5)

变化

public abstract class MainActivity extends AppCompatActivity

public class MainActivity extends AppCompatActivity

答案 1 :(得分:2)

MainActivityabstract class。所以你需要扩展这个类或删除抽象声明。

  

Java编程语言中的抽象涉及创建   一个或多个接口或抽象类来隐藏实现   的信息。

扩展抽象类:

public class MainActivity2 extends MainActivity {

    protected void onCreate(Bundle savedInstanceState) {
       //This calls the superclass method: MainActivity onCreate
        super.onCreate(savedInstanceState);
    }
}

删除抽象类:

public class MainActivity extends AppCompatActivity {

    public void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        ...
    }
}