到底哪里错了?求解答!

求大神帮忙解答

04-08 15:27:39.683 12378 12378 E AndroidRuntime FATAL EXCEPTION: main
04-08 15:27:39.683 12378 12378 E AndroidRuntime java.lang.IllegalAccessError: tried to access class android.support.v4.app.BaseFragmentActivityGingerbread from class com.zhy.autolayout.AutoLayoutActivity
04-08 15:27:39.683 12378 12378 E AndroidRuntime at com.zhy.autolayout.AutoLayoutActivity.access$Sandroid$support$v4$app$BaseFragmentActivityGingerbread$3(AutoLayoutActivity.java)
04-08 15:27:39.683 12378 12378 E AndroidRuntime at com.zhy.autolayout.AutoLayoutActivity$0$debug.onCreateView(AutoLayoutActivity.java:41)
04-08 15:27:39.683 12378 12378 E AndroidRuntime at com.zhy.autolayout.AutoLayoutActivity.onCreateView(AutoLayoutActivity.java)
04-08 15:27:39.683 12378 12378 E AndroidRuntime at com.note.book.menu.MenuActivity.access$Scom$zhy$autolayout$AutoLayoutActivity$1(MenuActivity.java)
04-08 15:27:39.683 12378 12378 E AndroidRuntime at com.note.book.menu.MenuActivity$0$debug.onCreateView(MenuActivity.java:94)
04-08 15:27:39.683 12378 12378 E AndroidRuntime at com.note.book.menu.MenuActivity.onCreateView(MenuActivity.java)
04-08 15:27:39.683 12378 12378 E AndroidRuntime at com.note.book.MainActivity.access$Scom

你有不正确地使用多线程么?问题在com.zhy.autolayout.AutoLayoutActivity好好检查下

把代码发来看看。。。。。。。。。。。。。

代码

AutoLayoutActivity.java

package com.zhy.autolayout;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.util.AttributeSet;
import android.view.View;

;

/**

  • Created by zhy on 15/11/19.
    */
    public class AutoLayoutActivity extends AppCompatActivity
    {
    private static final String LAYOUT_LINEARLAYOUT = "LinearLayout";
    private static final String LAYOUT_FRAMELAYOUT = "FrameLayout";
    private static final String LAYOUT_RELATIVELAYOUT = "RelativeLayout";

    @Override
    public View onCreateView(String name, Context context, AttributeSet attrs)
    {
    View view = null;
    if (name.equals(LAYOUT_FRAMELAYOUT))
    {
    view = new AutoFrameLayout(context, attrs);
    }

    if (name.equals(LAYOUT_LINEARLAYOUT))
    {
        view = new AutoLinearLayout(context, attrs);
    }
    
    if (name.equals(LAYOUT_RELATIVELAYOUT))
    {
        view = new AutoRelativeLayout(context, attrs);
    }
    
    if (view != null) return view;
    
    return super.onCreateView(name, context, attrs);
    

    }

}

MenuActivity.java

package com.note.book.menu;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.note.book.DrawKey;
import com.note.book.R;
import com.zhy.autolayout.AutoLayoutActivity;
import android.view.View;
import android.util.AttributeSet;
import android.content.Context;

public abstract class MenuActivity extends AutoLayoutActivity
{
private LinearLayout title;
private TextView textTitle;
private DrawKey menuKey;
private DrawKey findKey;
private ImageView iconView;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    // TODO: Implement this method
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

// setContentView(R.layout.main);

}

// public final MenuActivity initTitle()
// {
// title = (LinearLayout)findViewById(R.id.title);
// textTitle = (TextView)findViewById(R.id.text_title);
// menuKey = (DrawKey)findViewById(R.id.meun_key);
// findKey = (DrawKey)findViewById(R.id.find_key);
//

// menuK
//
// return this;
// }

public void setIcon(Drawable icon)
{
    if (icon == null)return;

    iconView=new ImageView(this);

    LinearLayout.LayoutParams lp = new
        LinearLayout.LayoutParams(50, LayoutParams.FILL_PARENT);

    lp.setMargins(10,10,10,10);

    iconView.setScaleType(ImageView.ScaleType.FIT_XY);

    iconView.setImageDrawable(icon);

    title.addView(iconView, 0, lp);
}

public void setIcon(int resIcon)
{
    if (resIcon == 0) return;

    iconView=new ImageView(this);

    LinearLayout.LayoutParams lp = new
        LinearLayout.LayoutParams(50, LayoutParams.FILL_PARENT);

    lp.setMargins(10,10,10,10);

    iconView.setScaleType(ImageView.ScaleType.FIT_XY);

    iconView.setImageResource(resIcon);

    title.addView(iconView, 0, lp);
}

public Drawable getIcon()
{
    return iconView.getDrawable();
}

@Override
public View onCreateView(String name, Context context, AttributeSet attrs){
    // TODO: Implement this method
    return super.onCreateView(name, context, attrs);
}

protected abstract boolean onMenuKeyDown(MenuWindow menu, int keyCode, KeyEvent keyEvent);

protected abstract boolean onCreateMeun(NoteMenu meun);

protected void onMenuItemClick(MenuItem item)
{

}

}

MainActivity.java

package com.note.book;

import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.note.book.adapter.NoteBookAdapter;
import com.note.book.dialog.EditDialog;
import com.note.book.menu.MenuActivity;
import com.note.book.menu.MenuItem;
import com.note.book.menu.MenuWindow;
import com.note.book.menu.NoteMenu;
import com.readystatesoftware.systembartint.SystemBarTintManager;
import java.io.File;
import java.io.IOException;
import java.io.ObjectOutputStream;
import android.util.AttributeSet;
import android.content.Context;

public class MainActivity extends MenuActivity{

private NoteBookAdapter  adapter;


private ListView notebookList;

private LinearLayout title;
private LinearLayout batchTitle;

private TextView hint;


private String def_path;

private File file;

private int mode;


private final int OK=1;
private final int CREATE_DIALOG = 0;
private final int CREATE_DIR_DIALOG = 1;
private final int POTION_DIALOG=2;
private final int RANAME_DIALOG=3;

private final int COPY=1;
private final int MOVE=2;

private void deleteFile(final int index){
    final ProgressDialog pd=new ProgressDialog(this);

    pd.setMax(100);
    pd.setMessage("正在加载");
    pd.setCancelable(false);
    pd.show();

    final Handler h=new Handler()
    {
        @Override
        public void handleMessage(Message msg){
            if (msg.arg1 == OK){
                adapter.notifyDataSetChanged();

                if (adapter.isEmpty() && hint.getVisibility() != View.VISIBLE)
                    hint.setVisibility(View.VISIBLE);

                pd.dismiss();
            }
        }
    };

    new Thread(new Runnable(){

            @Override
            public void run(){
                adapter.delete(adapter.dataAt(index));

                Message m=new Message();

                m.arg1 = OK;
                m.setTarget(h);
                m.sendToTarget();
            }
        }).start();
}

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

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
        setTranslucentStatus(this, true);
    }

    SystemBarTintManager s = new SystemBarTintManager(this);

    s.setNavigationBarTintEnabled(true);
    s.setNavigationBarTintResource(R.color.system_bar_clor);

    hint = (TextView)findViewById(R.id.tv_hint);

    if (savedInstanceState == null)
        return;

    adapter = savedInstanceState.getParcelable("data");

    adapter.setContext(this);
}

@Override
public View onCreateView(String name, Context context, AttributeSet attrs){
    // TODO: Implement this method
    return super.onCreateView(name, context, attrs);
}

@TargetApi(19)
private void setTranslucentStatus(Activity p1, boolean p2){
    WindowManager.LayoutParams params = p1.getWindow().getAttributes();

    int bits=WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;

    if (p2){
        params.flags |= bits;
    }else{
        params.flags &= ~bits;
    }

    p1.getWindow().setAttributes(params);
}

@Override
protected void onResume(){
    // TODO: Implement this method
    super.onResume();

    if (notebookList != null){
        if (notebookList.getAdapter() == null)
            notebookList.setAdapter(adapter);
        return;
    }
    if (adapter != null){
        notebookList = (ListView)findViewById(R.id.notebook_list);
        notebookList.setAdapter(adapter);
        if (adapter.isEmpty() && hint.getVisibility() == View.VISIBLE){
            hint.setVisibility(View.GONE);
        }
        return;
    }

    init();
}

@Override
protected void onSaveInstanceState(Bundle outState){
    // TODO: Implement this method
    super.onSaveInstanceState(outState);

    outState.putParcelable("data", adapter);
}

private void open(final String name){
    final ProgressDialog pd=new ProgressDialog(this);

    pd.setMax(100);
    pd.setMessage("正在加载");
    pd.setCancelable(false);
    pd.show();

    final Handler h=new Handler()
    {
        @Override
        public void handleMessage(Message msg){
            if (msg.arg1 == OK){
                if (adapter.isEmpty())
                    hint.setVisibility(View.VISIBLE);
                adapter.notifyDataSetChanged();
                pd.dismiss();
            }
        }
    };

    new Thread(new Runnable(){

            @Override
            public void run(){
                adapter.openDIR(name);

                Message m=new Message();

                m.arg1 = OK;
                m.setTarget(h);
                m.sendToTarget();
            }
        }).start();
}

private void returnDir(){
    final ProgressDialog pd=new ProgressDialog(this);

    pd.setMax(100);
    pd.setMessage("正在加载");
    pd.setCancelable(false);
    pd.show();

    final Handler h=new Handler()
    {
        @Override
        public void handleMessage(Message msg){
            if (msg.arg1 == OK){
                adapter.notifyDataSetChanged();

                if (!adapter.isEmpty()){
                    hint.setVisibility(View.GONE);

                }

                pd.dismiss();
            }
        }
    };

    new Thread(new Runnable(){

            @Override
            public void run(){
                adapter.returnDIR();

                Message m=new Message();

                m.arg1 = OK;
                m.setTarget(h);
                m.sendToTarget();
            }
        }).start();
}

private void init(){
    final ProgressDialog pd=new ProgressDialog(this);

    pd.setMessage("请稍候");
    pd.setMax(2);
    pd.setCancelable(false);
    pd.show();

    final Handler h=new Handler();

    h.post(new Runnable(){
            @Override
            public void run(){
                final DrawKey menuKey=(DrawKey)findViewById(R.id.meun_key);
                final DrawKey batchMenu=(DrawKey)findViewById(R.id.menu);

                title = (LinearLayout)findViewById(R.id.title);
                batchTitle = (LinearLayout)findViewById(R.id.batch_title);

                if (null == notebookList)
                    notebookList = (ListView)findViewById(R.id.notebook_list);

                SharedPreferences s = getSharedPreferences("settings", MODE_PRIVATE);

                if (adapter == null){
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                        def_path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "/Notebook";
                    }else if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                        def_path = Environment.getExternalStorageDirectory() + "/Notebook";
                    }else{
                        def_path = getFilesDir() + "/Notebook";
                    }

                    if (s.getInt("count", 0) == 0){
                        SharedPreferences.Editor editor=s.edit();
                        editor.putString("dir_path", def_path);
                        editor.putInt("count", 1);

                        editor.commit();
                    }

                    adapter = new NoteBookAdapter(MainActivity.this, s.getString("dir_path", def_path));
                }

                View.OnClickListener menuListener = new View.OnClickListener(){

                    @Override
                    public void onClick(View p1){

                        final MenuWindow menu=new MenuWindow(MainActivity.this);

                        int activityWidth = getWindow().getDecorView().getWidth();

                        final int width = (int) (activityWidth * 0.26666667f);

                        System.out.println(activityWidth);

                        menu.setWidth(width);

                        final int xSetoff = ~(int) ((width - menuKey.getWidth()) + activityWidth * 0.008333333f) - 1;

                        menu.show(menuKey, xSetoff, 0, 0xFF1090FF);
                    }
                };

                menuKey.setOnClickListener(menuListener);
                batchMenu.setOnClickListener(menuListener);

                notebookList.setOnItemClickListener(
                    new ListView.OnItemClickListener(){

                        @Override
                        public void onItemClick(AdapterView<?> p1, View p2, int p3, long p4){
                            if (p3 == 0){
                                if (adapter.isReturnDir()){
                                    returnDir();
                                    return;
                                }
                            }
                            if (adapter.isLargeHandle()){
                                adapter.setChecked(p3);
                                adapter.notifyDataSetChanged();
                                return;
                            }
                            if (adapter.isDirectory(p3)){
                                open(adapter.dataAt(p3));
                                return;
                            }

                        }
                    });

                notebookList.setOnItemLongClickListener(new
                    AdapterView.OnItemLongClickListener(){

                        @Override
                        public boolean onItemLongClick(AdapterView<?> p1, View p2, int p3, long p4){
                            if (adapter.isReturnDir())
                                if (p3 == 0)
                                    return true;
                            if (adapter.isLargeHandle())
                                return true;

                            Bundle bundle=new Bundle();

                            bundle.putInt("position", p3);
                            if (adapter.isDirectory(p3))
                                bundle.putCharSequenceArray("data", getResources()
                                                            .getStringArray(R.array.potion_is_dir_array));
                            else
                                bundle.putCharSequenceArray("data", getResources()
                                                            .getStringArray(R.array.potion_array));

                            bundle.putBoolean("is_dir", adapter.isDirectory(p3));

                            adapter.setIsChecked(p3);
                            adapter.notifyDataSetChanged();

                            showCreateDialog(null, POTION_DIALOG, bundle);

                            return true;
                        }
                    });


                if (s.getBoolean("is_sort", true))
                    adapter.sort();

                notebookList.setAdapter(adapter);

                if (!adapter.isEmpty())
                    hint.setVisibility(View.GONE);

                pd.dismiss();
            }
        });
}

private void createNewSTFFile(final String name){
    final ProgressDialog pd=new ProgressDialog(this);

    pd.setMax(100);
    pd.setMessage("正在加载");
    pd.setCancelable(false);
    pd.show();

    final Handler h=new Handler();
    h.post(new Runnable(){

            @Override
            public void run(){
                adapter.createNewSTFFile(name);

                adapter.notifyDataSetChanged();

                if (hint.getVisibility() == View.VISIBLE){
                    hint.setVisibility(View.GONE);
                }

                pd.dismiss();

            }
        });
}

private void mkdir(final String name){
    final ProgressDialog pd=new ProgressDialog(this);

    pd.setMax(100);
    pd.setMessage("正在加载");
    pd.setCancelable(false);
    pd.show();

    final Handler h=new Handler();
    h.post(new Runnable(){

            @Override
            public void run(){
                adapter.mkdir(name);

                adapter.notifyDataSetChanged();

                if (hint.getVisibility() == View.VISIBLE){
                    hint.setVisibility(View.GONE);
                }

                pd.dismiss();

            }
        });
}

@Override
protected boolean onCreateMeun(NoteMenu menu){
    if (adapter.isLargeHandle()){
        menu.add(0, NoteMenu.ITEM_1, 1, "重命名");
        menu.add(0, NoteMenu.ITEM_2, 2, "移动");
        menu.add(0, NoteMenu.ITEM_3, 3, "复制");
        menu.add(0, NoteMenu.ITEM_4, 4, "删除");
    }else{
        menu.add(0, 0, 1, "新建笔记");
        menu.add(0, 1, 1, "新建文件夹");
        menu.add(1, 2, 2, "设置");
        menu.add(1, 3, 3, "退出");
    }

    return true;
}

@Override
protected boolean onMenuKeyDown(MenuWindow menu, int keyCode, KeyEvent keyEvent){
    switch (keyCode){
        case KeyEvent.KEYCODE_BACK:
        menu.dismiss();
        return true;
        default:
        return false;
    }
}

@Override
protected void onMenuItemClick(MenuItem item){
    int id=item.getItemID();

    if (adapter.isLargeHandle()){

    }else{
        switch (id){
            case 0:
            showCreateDialog("新建笔记", CREATE_DIALOG);
            break;
            case 1:
            showCreateDialog("新建文件夹", CREATE_DIR_DIALOG);
            break;
            case 2:
            break;
            case 3:
            finish();
            break;
            default:
            break;
        }
    }
}

private void showCreateDialog(String title, int id){
    showCreateDialog(title, id, null);
}

private void showCreateDialog(String title, final int id, final Bundle save){
    final EditDialog dialog = new EditDialog(this);

    if (id == POTION_DIALOG){
        String[] data=(String[])save.getCharSequenceArray("data");

        final int position = save.getInt("position");

        dialog.setAdapter(new ArrayAdapter<String>(
                this
                , R.layout.potion_item
                , R.id.potion_item_text
                , data), new
            DialogInterface.OnClickListener(){

                @Override
                public void onClick(DialogInterface p1, int p2){
                    boolean isDir=save.getBoolean("is_dir");

                    if (!isDir){
                        System.out.println(isDir);
                        switch (p2){
                            case 0:
                            break;
                            case 1:
                            showCreateDialog("新名字", RANAME_DIALOG, save);
                            break;
                            case 2:
                            deleteFile(position);
                        }
                    }else{
                        switch (p2){
                            case 0:
                            showCreateDialog("新名字", RANAME_DIALOG, save);
                            break;
                            case 1:
                            deleteFile(position);
                            case 2:
                            infoCopyOrMove(COPY);
                        }
                    }
                }
            });

        dialog.show();

        dialog.setOnDismissListener(new
            DialogInterface.OnDismissListener(){

                @Override
                public void onDismiss(DialogInterface p1){
                    adapter.setUnchecked(position);
                    adapter.notifyDataSetChanged();
                }
            });

        return;
    }

    dialog.setTitle(title);
    dialog.setTitleColor(0xff000000);
    dialog.setOkClick(new 
        DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface p1, int p2){
                if (id == CREATE_DIALOG)                    
                    createNewSTFFile(dialog.getText());
                else if (id == RANAME_DIALOG)
                    adapter.rename(save.getInt("position"), dialog.getText());
                else
                    mkdir(dialog.getText());

                adapter.notifyDataSetChanged();

            }
        });

    dialog.show();
}

private void infoCopyOrMove(int mode){

    this.mode = mode;
    this.file = adapter.getDIR();

    AlphaAnimation t = new AlphaAnimation(0, 1);
    t.setDuration(300);

    AlphaAnimation b = new AlphaAnimation(1, 0);
    b.setDuration(300);

    title.setVisibility(View.GONE);
    batchTitle.setVisibility(View.VISIBLE);

    title.startAnimation(b);
    batchTitle.startAnimation(t);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    if (keyCode == KeyEvent.KEYCODE_BACK){
        if (adapter.isReturnDir()){
            returnDir();
            return true;
        }
    }

    return super.onKeyDown(keyCode, event);
}

@Override
protected void onDestroy(){
    // TODO: Implement this method
    super.onDestroy();

    try{
        if (isFinishing()){
            ObjectOutputStream out = new ObjectOutputStream(openFileOutput("data obj",MODE_PRIVATE));

            out.writeObject(adapter);

            System.out.println("保存成功; " + out);

            out.close();
        }
    }catch (IOException e){
        Log.e("Main", e.getMessage(), e);
    }
}

}