現在、v4 と v7 (アクションバー) の互換性ライブラリを同時に使用しようとして、興味深い問題が発生しています。
一方では ActionBarActivity を拡張し、他方では Fragment を拡張する独自の Activity クラスを持っているとします。その中で "(MyActivity)getActivity()" を呼び出します。
インポートを確認したところ、私のフラグメントは v4 フラグメントです。
v4 Fragment では、「getActivity()」を呼び出すと、FragmentActivity が返されます。
私もチェックしました:ActionBarActivityはFragmentActivityを拡張します。
ここに私の問題があります: エディターにエラーはありません (赤い線はありません)。Androidスタジオを使用しています。プロジェクトを「作成」しようとすると、フラグメント内で「getActivity」を呼び出すたびにコンパイラがエラーを返します。彼は FragmentActivity を持っていることを教えてくれますが、ActionBarActivity が期待されており、それらのクラスには互換性がないことがわかります。中断され、アプリをテストすることさえできません。
Gradle の設定に問題があるのかもしれませんが、これで述べたように、build.gradle ファイルの「依存関係」の部分に「compile "com.android.support:appcompat-v7:18.0.+"」を追加しました。ページ:" http://developer.android.com/tools/support-library/setup.html "、そして何も変わらない...
何か案が?
編集: 昨日の投稿への追加として、すべてが前に説明されていても、ここにいくつかのコード部分とAndroid-Studioからのエラーメッセージがあります:
まず、私の活動:
...
import android.support.v7.app.ActionBarActivity;
...
public abstract class MyAbstractActivity extends ActionBarActivity{
//Do some stuff here
}
私のアプリケーションのすべてのアクティビティは、このクラスを拡張します。
ここに私のフラグメントがあります:
...
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
...
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Do some stuff...
((MyAbstractActivity)getActivity()).getSupportActionBar().setTitle(R.string.app_name);
}
//Do some stuff...
}
エディターにエラーは表示されません。しかし、プロジェクトを「作成」すると、「イベント ログ」に次のメッセージが表示されます。
コンパイルは 4 秒で 5 つのエラーと 0 の警告で完了しました
「Messages Make」の部分では、「MyAbstractActivity」で「getActivity()」をキャストしようとするたびに、これを確認できます。
Java: 変換できない型が必要です: com.myapps.abstracts.MyAbstractActivity が見つかりました: android.support.v4.app.FragmentActivity