【问题标题】:GetSherlockActivity not found未找到 GetSherlockActivity
【发布时间】:2014-02-15 09:38:07
【问题描述】:

我正在尝试使用此代码通过 whatsapp 发送消息。我遇到的问题是,“方法 getSherlockActivity() 对于 Send 类型未定义”。我应该重命名我的发送还是需要导入一些东西? eclipse 提出的唯一建议就是创建它。

import com.actionbarsherlock.app.SherlockActivity;

import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.widget.Toast;

public class Send extends SherlockActivity{

    public void sendWhatsAppMessageTo(String whatsappid) {

        Cursor c = getSherlockActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI,
                new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
                new String[] { whatsappid }, null);
        c.moveToFirst();

        Intent whatsapp = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
        c.close();

         if (whatsapp != null) {

        startActivity(whatsapp);      

        } else {
                Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                        .show();
        //download for example after dialog
                        Uri uri = Uri.parse("market://details?id=com.whatsapp");
                        Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
            }

        }

}

编辑:删除 getSherlockActivity() 后的 Logcat 输出是:

02-15 02:05:10.647: D/AndroidRuntime(2831): Shutting down VM
02-15 02:05:10.647: W/dalvikvm(2831): threadid=1: thread exiting with uncaught exception (group=0x40a151f8)
02-15 02:05:10.647: E/AndroidRuntime(2831): FATAL EXCEPTION: main
02-15 02:05:10.647: E/AndroidRuntime(2831): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.wiers.whatsapp_api/de.wiers.whatsapp_api.MainActivity}: java.lang.NullPointerException
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.os.Looper.loop(Looper.java:137)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.ActivityThread.main(ActivityThread.java:4424)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at java.lang.reflect.Method.invokeNative(Native Method)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at java.lang.reflect.Method.invoke(Method.java:511)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at dalvik.system.NativeStart.main(Native Method)
02-15 02:05:10.647: E/AndroidRuntime(2831): Caused by: java.lang.NullPointerException
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.content.ContextWrapper.getContentResolver(ContextWrapper.java:91)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at de.wiers.whatsapp_api.Send.sendWhatsAppMessageTo(Send.java:15)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at de.wiers.whatsapp_api.MainActivity.onCreate(MainActivity.java:15)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.Activity.performCreate(Activity.java:4492)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-15 02:05:10.647: E/AndroidRuntime(2831):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
02-15 02:05:10.647: E/AndroidRuntime(2831):     ... 11 more
02-15 02:05:11.527: I/dalvikvm(2831): threadid=3: reacting to signal 3
02-15 02:05:11.537: I/dalvikvm(2831): Wrote stack traces to '/data/anr/traces.txt'
02-15 02:05:11.547: I/dalvikvm(2831): threadid=3: reacting to signal 3
02-15 02:05:11.547: I/dalvikvm(2831): Wrote stack traces to '/data/anr/traces.txt'

EDIT2:主文件:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import de.wiers.whatsapp_api.Send;
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Send snd = new Send();
        snd.sendWhatsAppMessageTo("12345678@s.whatsapp.net");
    }

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



}

【问题讨论】:

  • 我认为你的 Eclipse 还是红色的......确保你正确引用了 Sherlock 库。
  • @gunar:我已经导入了它,这是我得到的唯一错误。还有导入 com.actionbarsherlock.app.SherlockActivity;作品

标签: java android eclipse actionbarsherlock


【解决方案1】:

根据this,可以将getSherlockActivity改为this。

【讨论】:

  • 我已经尝试过了,运行时出现无法启动 ComponentInfo 空指针异常。
  • 又是一个answer
  • 运行时仍然出现“无法启动 Activity ComponentInfo:空指针异常”
  • 你需要用这个检查你的 c 是否为空。这就是我能说的。如果(光标!= null){cursor.moveToFirst();如果您发布 logcat 输出也会很有帮助。
  • 我现在已经添加了 Logcat 输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 2017-01-03
  • 2018-05-03
  • 2014-04-14
  • 1970-01-01
相关资源
最近更新 更多