ActivityNotFoundException

时间:2011-04-16 06:31:50

标签: android

嗨,谢谢你阅读我的问题。我是新来的熊。 我有应用程序,我已分为两个活动

  1. 找到服务器/登录和
  2. 显示TabActivity,其中包含在服务器上生成的三个网页。
  3. 我在两个布局中都有一个ImageView,在加载WebView时会起到启动画面的作用。当WebView和TabView标记为“已消失”时,它被标记为“可见”。

    signIn WebView是主入口点并在后台加载。如果一切都很好,则会加载带有“symbol”一词的页面。我的WebViewClient正在使用onPageFinished(WV,Str)方法进行侦听。

    问题:
    我似乎无法从signIn活动(ActivityNotFoundException)成功调用TabActivity 我在清单中列出了这两项活动 我在我的两个应用程序中完成了这个,所以我在这里发疯了。
    我可能已经改变了太多的代码并且有一个明显的错误。请原谅我。

    我已经尝试直接从WVC startActivity(Intent)调用另一个方法startTabView(),因此会有额外的代码令人困惑。

    我已尝试首先声明Intent,添加组件并调用startActivity(context, intent)

    我写了一行startActivity(new Intent("string class name"))

    我觉得我的意图可能是空的。

    看看:

    @Override
    public void onCreate(Bundle savedInstanceState) {       
        super.onCreate(savedInstanceState);        
        setContentView(R.layout.main);
        tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
        phoneID = "" + tm.getDeviceId() ;
    
        onStart();
    
    }   
    
    
    
    public void setLoginVisible(){
        ImageView splash = (ImageView) findViewById(R.id.splash);
        splash.setVisibility(View.GONE);
        signIn.setVisibility(View.VISIBLE);
        signIn.requestFocus();
        Toast.makeText(getApplicationContext(), phoneID, Toast.LENGTH_LONG);
    
    }
    public void startTabView(){
    
        try{
    
            startActivity( new Intent(this,WizForex.class));
    
        }catch (ActivityNotFoundException anf){
            Toast.makeText(getApplicationContext(), anf.toString(), Toast.LENGTH_LONG).show();
    
        }catch (Exception e){
            Toast.makeText(this, e.toString(), Toast.LENGTH_LONG);
        }
    }
    
    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
    
            wvc= new WebViewClient() { 
                @Override 
                    public void onPageFinished(WebView view, String url) { 
    
                        if (url.contains("NCdisclaimer")) setLoginVisible();
                        else if (url.contains("symbol")){
    
                            startTabView();                         
                        }                   
                    }   
    
                };
    
            signIn = (WebView) findViewById(R.id.signIn);
            signIn.getSettings().setJavaScriptEnabled(true);
            signIn.setWebViewClient(wvc);            
            signIn.loadUrl("http://www.thewizard........"+ phoneID);
    
    
    
    
        }
    

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
     <!-- Splash View -->   
    <ImageView 
        android:id="@+id/splash"    
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:scaleType="fitCenter"
        android:src="@drawable/splash"
        android:visibility="visible"/>
    
    
     <!-- signIn View -->   
     <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/signIn"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="gone"
    />
    
    
    </LinearLayout>
    

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.Eric.Sheasby.wiz"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="7" />
    
        <uses-permission android:name="android.permission.INTERNET"></uses-permission>
        <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    
    <application android:icon="@drawable/icon" android:label="@string/app_name">
    
            <activity android:name="WizFinder"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
    
            </activity>
    
    
        <activity android:name=".WizForex"
                   android:label="@string/app_name">  
    
         </activity> 
    
         <activity android:name=".Tester"
                    android:label="@string/tester">
    
    
        `
    

    对不起,这太久了。我做了什么?

1 个答案:

答案 0 :(得分:0)

问题可能是你从动作处理程序(另一个线程,而不是ui!)中调用startTabView()

你应该尝试实例化一个处理程序(mHandler):

private static final int LOAD_TABVIEW = 10; //or any other number
private final Handler handler = new Handler()
{
    public void handleMessage(Message msg) 
    {
        switch (msg.what)
        {
            case LOAD_TABVIEW:
                startTabView();
                break;
            default:
                break;
        }
    };
};

并在您的onPageFinished(WebView view, String url)方法中,您应该更改一行

startTabView();

//send message to the handler:
mHandler.sendEmptyMessage(LOAD_TABVIEW);

这样你的mHandler的handleMessage就会被调用,它应该启动TabView。