2017-09-21 14 views
0

こんにちは私はBLEアプリケーションを開発しています。デバイスをスキャンしてListFragmentに表示した後、サービスとその特性を取得したいと思います。私がonListItemClickでそれを実装していれば、私はすべてサービスと特性を得ることができます。しかし、今私は1つのアイテムをクリックしている間、新しいアクティビティを開始したい。onListItemClickを介してListFragmentからアクティビティを開始する方法

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    rightPosition = position + 1; 
    connectToDevice(); 
    Intent intent = new Intent(getActivity(),ServiceCharacteristicAvtivity.class); 
    startActivity(intent); 
} 

上記のようにすれば、私のアプリケーションのクラッシュは本当に解決策を探しましたが、失敗しました。多分それはとても簡単で、私はそれを見ません。誰かが私を助けることができますか?

私が手ログ

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fkoffle.blescanner/com.example.fkoffle.blescanner.ServiceCharacteristicAvtivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415) 
                       at android.app.ActivityThread.access$1100(ActivityThread.java:229) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:148) 
                       at android.app.ActivityThread.main(ActivityThread.java:7331) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
                       at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:356) 
                       at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:325) 
                       at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:286) 
                       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 

である私は開始したいアクティビティには、以下のテーマを追加し、ちょうど

public class ServiceCharacteristicAvtivity extends AppCompatActivity { 

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

}

+0

ログを追加できますか? – Eselfar

+0

"解決策"が見つかりませんでしたhttps://stackoverflow.com/questions/15514831/starting-new-activity-from-listfragment-using-onlistitemclick – Fab

+0

申し訳ありませんEselfarもちろん私はログを追加することができます – Fab

答えて

1

マニフェストファイル内にあります。

<activity 
     android:name=". ServiceCharacteristicAvtivity" 
     android:theme="@style/Theme.AppCompat.Light.DarkActionBar" /> 

あなたのlogcatが示唆するように、あなたは(私は上記の例で使用など)Theme.AppCompatまたは任意の子孫を使用する必要があります。

+0

ああ私の神...それは私のマニフェストthxを見たdidntの失敗でした – Fab

0

おそらくあなたが呼び出すアクティビティはアクティビティを拡張していますが、レイアウトにはAppCompatActivityの要素が含まれています。それがない場合、あなたはあなたのレイアウトコードとacytivityコードを共有することができ、

public class ServiceCharacteristicAvtivity extends AppCompatActivity { 
.... 
.... 
} 

: は、だからあなたの活動に、このような何か?

1

AppCompatActivityを拡張する場合は、AppCompatまたは任意の子孫テーマを使用する必要があります。

アクティビティのマニフェストでは、以下のいずれかのテーマを使用できます。

android:theme="@style/Theme.AppCompat.Light" 
android:theme="@style/Theme.AppCompat.Light.DarkActionBar" 
android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
関連する問題