嗨,谢谢你阅读我的问题。我是新来的熊。 我有应用程序,我已分为两个活动
我在两个布局中都有一个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">
`
对不起,这太久了。我做了什么?
答案 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。