微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 错误 – 没有注册仪器!必须在注册仪器下运行

A)为什么当我尝试运行应用程序时出现此错误

我的崩溃日志错误

java.lang.RuntimeException: Unable to start activity
java.lang.IllegalStateException: No instrumentation registered! Must
run under a registering instrumentation.
at
android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2947)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6688)
at java.lang.reflect.Method.invoke(Native Method)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: java.lang.IllegalStateException: No instrumentation
registered! Must run under a registering instrumentation.
at
android.support.test.InstrumentationRegistry.getInstrumentation(InstrumentationRegistry.java:45)
at
android.support.test.InstrumentationRegistry.getContext(InstrumentationRegistry.java:75)
at
com.wachipi.challengetv.GuidaTvActivity$GetData.onPreExecute(main.java:76)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:613)
at android.os.AsyncTask.execute(AsyncTask.java:560)
at com.wachipi.challengetv.GuidaTvActivity.onCreate(main.java:68)
at android.app.Activity.performCreate(Activity.java:6912)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at
android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2900)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008) 
at android.app.ActivityThread.-wrap14(ActivityThread.java) 
at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6688) 
at java.lang.reflect.Method.invoke(Native Method) 
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

Unable to start activity ComponentInfojava.lang.IllegalStateException:
No instrumentation registered! Must run under a registering
instrumentation.

是什么造成的?我还在学习,如果你能解释得更多,我会很感激.

这是我的代码

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.support.design.widget.TabLayout;
import android.widget.ListView;
import android.widget.Toast;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;




import static android.support.test.InstrumentationRegistry.getContext;
import static com.google.android.gms.internal.zzahn.runOnUiThread;



/**
 * Created by GB on 28/03/18.
 */

public class Main extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private ProgressDialog pDialog;
    //url per il recupero del JSON
    private static String url = "there is an url trust me. But i need to hide";

    private ListView TodayMenu;

    ArrayList<HashMap<String, String>> DATA;

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

        Toolbar toolbargtv = (Toolbar) findViewById(R.id.toolbargtv);
        setSupportActionBar(toolbargtv);

        //getSupportActionBar().setdisplayHomeAsUpEnabled(true);

        ViewPager viewer = (ViewPager) findViewById(R.id.viewer);
        setupViewPager(viewer);

        TabLayout tabsgtv = (TabLayout) findViewById(R.id.tabsgtv);
        tabsgtv.setupWithViewPager(viewer);

        DATA = new ArrayList<>();

        TodayMenu = (ListView) findViewById(R.id.todayMenu);

        new GetData().execute();
    }

    private class GetData extends AsyncTask<Void,Void,Void>{
        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            //Mostro avviso
            pDialog = new ProgressDialog(getContext());
            pDialog.setMessage("Attendi..");
            pDialog.setCancelable(false);
            pDialog.show();
        }

        @Override
        protected Void doInBackground(Void... arg0){
            HttpHandler sh = new HttpHandler();
            //faccio una richiesta al server e attendo risposta
            String jsonStr = sh.makeServiceCall(url); 
            Log.e("RAW-JSON: ","Retrieve RAW-Json is "+jsonStr);

            if (jsonStr != null) {
                try {
                    JSONObject jsonObj = new JSONObject(jsonStr);
                    String DATESTRING = jsonObj.getString("date");

                    JSONObject DATE = new JSONObject(DATESTRING); //Log.d("STAMPA","DATESTRING"+DATESTRING);

                    //Log.d("PER FAVORE","IERI ERA "+Ieri);
                    //ESTRAGGO E INSERISCO DOVE MI SERVE
                    String Yesterday = DATE.getString("ieri");
                    String Today = DATE.getString("oggi");
                    String Tomorrow = DATE.getString("domani");
                } catch (JSONException e) {
                    runOnUiThread(new Runnable(){
                        @Override
                        public void run(){
                            Toast.makeText(getContext(),"Errore nel recupero dati",Toast.LENGTH_LONG).show();
                        }
                    });
                    e.printstacktrace();
                }
            }

            return null;
        }
        @Override
        protected void onPostExecute(Void result){
            super.onPostExecute(result);
            //tolgo il caricamento di pDialog
            if (pDialog.isShowing())
                pDialog.dismiss();
        }
    }

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new YesterdayFragment(),"" );  //i can set from here the name of tabs but how is the name from by Json?
        adapter.addFragment(new TodayFragment(), "");
        adapter.addFragment(new TomorrowFragment(), "");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
}

解决方法:

您正尝试在pDialog = new ProgressDialog(getContext())中使用上下文;但是你没有使用像这样的上下文(活动上下文)或者getApplicationContext(),而是使用了一个InstrumentationRegistry上下文,在你的情况下它没用,因为那不是测试,请参阅import import static android.support.test.InstrumentationRegistry.getContext ;
只需修复上下文即可使用正确的上下文.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐