如何从Android中的另一个类调用一个方法

时间:2016-02-23 08:15:06

标签: java android sqlite

当我正在调用fromcheckpass(mcontext)时,我会得到nullpointerexception。哪里有错误。救救我!

来自onClick()我正在呼叫fromcheckpass(mcontext)

public void onClick(View v) {
    InboxActivity inboxActivity = new InboxActivity();
    inboxActivity.fromcheckpass(CheckPass.this);
}

如何调用fromcheckpass(mcontext)方法?

public void fromcheckpass(Context mcontext) {
    Toast.makeText(mcontext, "WEL COME", Toast.LENGTH_LONG).show();
    Db = new MySQLiteHelper(this);
    String DbInsert = Utils.getPreferences("DbInsert", this);

    if (!DbInsert.equalsIgnoreCase("Inserted")) {
        SaveDataInDB();
    }

    MessageListView = (ListView) findViewById(R.id.lvInbox);
    ActionBar bar = getActionBar();
    bar.setBackgroundDrawable(new    ColorDrawable(Color.parseColor("#0154A4")));
    bar.setTitle(R.string.app_name);
    bar.setTitle(Html.fromHtml("<font color='#ffffff'>WeText </font>"));
    bar.setIcon(R.drawable.icon_top);

    Utils.getOverflowMenu(this);

    attachListeners();

    dataList = Utils.getLatestMessageOfAllContacts(InboxActivity.this);

    if (dataList.isEmpty()) {
        Toast.makeText(getApplicationContext(), "NO MESSAGES", Toast.LENGTH_LONG).show();
    } else {
        iAdapter = new Adapter(InboxActivity.this, dataList);
        MessageListView.setAdapter(iAdapter);
    }
}

每当我从checkpass(mcontex)方法调用时,应用程序崩溃。这是我的logcat:

Process: com.futureappspk.WeTextFree, PID: 29065
    java.lang.NullPointerException
        at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:186)
        at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:369)
        at com.futureappspk.WeTextFree.Utils.getPreferences(Utils.java:432)
        at com.futureappspk.WeTextFree.InboxActivity.fromcheckpass(InboxActivity.java:130)
        at com.futureappspk.WeTextFree.CheckPass$1.onClick(CheckPass.java:40)

这是我的util类方法,它调用fromcheckpass(mcontext)

public static String getPreferences(String key, Context context) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    String userName = sharedPreferences.getString(key, "UserName");
    return userName;
}

2 个答案:

答案 0 :(得分:0)

请试试这个 我认为你的CheckPass不是你的活动 因此正确地传递上下文像     getActivity()或getApplicationContext();
在onClick方法中 希望它有所帮助

答案 1 :(得分:0)

通知您错误在此行

tearoff=False

可能的原因

您必须将String DbInsert = Utils.getPreferences("DbInsert", this); getSharedPreferences类的实例一起使用

Context

您尚未显示ctx.getSharedPreferences("MY_PREF",0); 类,但我猜Utils方法是类的静态方法,您直接调用它而不初始化任何getPreferences应用程序。因此,我建议您初始化ContextContext中的Constructor,并仅将Utils方法用于getSharedPreferences类的实例。

<强>更新

尽量不要让它静止,做这样的事情

Utils