(Androidのメーカーに基づいて)Androidの開発者(コードの最初の行第二版)一般的な例外と解決策(B)

1.Glide:あなたが非ヌルビューに渡す必要があります

ビット異常グライドロード絵タイムズを使用した場合、[カスタマイズ]ダイアログでは
java.lang.IllegalArgumentExceptionが:によって引き起こさあなたは合格しなければならない null以外のビューに
ダイアログが表示されていない、とImageViewのがヌルであるため、それがこの異常が報告されています
解決策はmDialog.show()、ダイアログが表示置くことです。グライド負荷絵で行きます。

2.AndroidスタジオプロジェクトがクラッシュしたバイナリXMLファイルのライン#2を報告します。エラーは、クラスI型エラーを膨らませます

考えられる原因:リソースファイルを見つけることができません:システムがあればだけ分散型ファイルには、解像度に応じてリソースファイル、デバイスエラーの異なる解像度を別の描画可能なフォルダを選択するためのリソースをロードします。
特定の参照https://www.cnblogs.com/awkflf11/p/5362927.htmlhttps://www.cnblogs.com/longmaoxiansheng/p/9420619.html

3.android.content.ActivityNotFoundException:いいえ活動は意思取り扱いがわかっ问题

次のように考えます

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.DEFAULT] dat=content://***.fileProvider/files_root/Android/data/***/cache/ofddata/5bd4483f46db4ea58fe3e7a0cb387cf8.ofd typ=application/ofd flg=0x10000003 }

活動は、設定ファイルのAndroidManifest.xmlの内部で新しい構成情報を書いていないので、これはです
:ソリューション
関連活動をAndroidManifest.xmlに設定acitivityの意図・フィルタを追加し、以下のように、

<intent-filter>
	<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

もう一つの理由は、そのプロファイル情報事務のエラーの可能性があります

<activity
    android:name="com.example.message.Message"
    android:label="@string/title_activity_message_web"
    android:theme="@android:style/Theme.NoTitleBar" >
</activity>

上記のように、ファイル名には、余分に注意する必要があり、実際のlabelプロパティと一致しないことがあります。

溶液中4. Androidのメッセージング・メカニズム:ビュー階層を作成しただけ元のスレッドがその見解に触れることができます

オリジナルコード

public class MainActivity extends Activity implements View.OnClickListener {
	
	private TextView stateText;
	private Button btn;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        stateText = (TextView) findViewById(R.id.tv);
        btn = (Button) findViewById(R.id.btn);
        
        btn.setOnClickListener(this);
    }
 
	@Override
	public void onClick(View v) {
		new WorkThread().start();
	}
	
	//工作线程
	private class WorkThread extends Thread {
		@Override
		public void run() {
			//......处理比较耗时的操作
			
			//处理完成后改变状态
			stateText.setText("completed");
		}
	}
}

ランタイムは文句を言うでしょう

ERROR/AndroidRuntime(421): FATAL EXCEPTION: Thread-8
ERROR/AndroidRuntime(421): android.view.ViewRoot$CalledFromWrongThreadException: 
Only the original thread that created a view hierarchy can touch its views.

その理由は、ビューコンポーネントはスレッドセーフAndroidシステムは、あなたがメインスレッドで更新する必要がありますビューを更新する場合、更新操作は、サブスレッドで実行することができない、ではないということです。
ソリューション:子スレッド、更新操作を行うと、オブジェクトがメインスレッドに通知ハンドラを使用するには、メインスレッドでメインスレッドに通知します。

public class MainActivity extends Activity implements View.OnClickListener {
	
	private static final int COMPLETED = 0;
	
	private TextView stateText;
	private Button btn;
	
	private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			if (msg.what == COMPLETED) {
				stateText.setText("completed");
			}
		}
	};
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        stateText = (TextView) findViewById(R.id.tv);
        btn = (Button) findViewById(R.id.btn);
        
        btn.setOnClickListener(this);
    }
 
	@Override
	public void onClick(View v) {
		new WorkThread().start();
	}
	
	//工作线程
	private class WorkThread extends Thread {
		@Override
		public void run() {
			//......处理比较耗时的操作
			
			//处理完成后给handler发送消息
			Message msg = new Message();
			msg.what = COMPLETED;
			handler.sendMessage(msg);
		}
	}
}

上記こうしてを通じて、我々は、完全に子スレッドへの作業を処理する複雑なタスクをスレッド安全性の問題を解決することができ、その後、メインスレッドの更新によってメッセージメカニズムからの眺め、プロセスをスレッドサブハンドラオブジェクトにより、メインスレッドに通知します重要な役割。
※Androidはルーパー、ハンドラによってメッセージループ機構を実装します。Androidのニュースサイクルは、スレッドのために、各スレッドは、独自のメッセージ・キューとメッセージループを持つことができます。
分析の仕組みの詳細については参照することができhttps://blog.csdn.net/mars2639/article/details/6625165#を

ようこそ画面の後5. APPの設定を開始し、AndroidStudioブート画面のフラッシュバックを追加します

解決策:
最初のページの開始は同時に、XXXActivityに設定され、その主な活動は以下を元のファイルを追加します。

<activity android:name=".XXXActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name=".MainActivity">
</activity>

変更後に動作することができます。

6.Handler.SendMessage() - メソッド「のsendMessage(android.os.Message)を解決することはできません

原因:インポートエラーパッケージ; -
ソリューション:うimport java.util.logging.Handler;変更することimport android.os.Handler;に。

公開された51元の記事 ウォンの賞賛184 ・は 30000 +を見て

おすすめ

転載: blog.csdn.net/CUFEECR/article/details/103341465