0

)は動作しません。私は私のボタンをクリックして、私は次のエラーを取得するとき、それはアプリをクラッシュ:FragmentActivityでstartActivity(intent)の代わりに使用するものは何ですか? FragmentActivity、startActivity(中何らかの理由で

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.name.app/com.example.name.app.WorldTabBar}: java.lang.ClassCastException: com.example.name.app.WorldTabBar cannot be cast to android.app.Activity 

は、ここに私のコードです:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{ 

Button live; 

private GoogleMap mMap; 

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

final SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 


live=findViewById((R.id.GoToLive)); 

live.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) { 

      Intent startIntent = new Intent(MapsActivity.this, WorldTabBar.class); 
       startActivity(startIntent);     
     } 
    }); 

startActivity()は、FragmentActivityでアプリケーションをクラッシュさせます。 FragmentActivityではgetActivity()を使用することができません。なぜなら私は単に ".this"を使用するはずですが、startActivity()では動作しないからです。私はちょうど断片を拡張し、rootViewでonCreateViewメソッドへのonCreateを変更使用し、FragmentActivityの代わりにしようとした

は、(getActivityを追加しました)どこでも

getActivity().startActivity(startIntent); //<-didn't work, crashes again 

はここで、私のmanifest.xmlです:

</activity> 
    <activity 
     android:name=".MainActivity" 
     android:exported="true" 
     android:label="@string/title_activity_main" /> 
    <activity android:name=".WorldTabBar" /> 

    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="@string/myKey" /> 

    <activity 
     android:name=".MapsActivity" 
     android:label="@string/title_activity_maps"></activity> 
</application> 

startActivity()の代わりに使用できるものがありますが、同じアクションを実行するのでしょうか?実際には...

Intent startIntent = new Intent(MapsActivity.this, WorldTabBar.class); 

... ^上記のコードは、startActivity(せずにそれ自体で動作します)でも、しかし、私は今私overridePendingTransitionコードが認識されません、スタートコードなしだと思います。それで、私はFragmentActivityでstartActivity()のように動作しますが、startActivity()では使用できないコードがいくつかありますか?

EDIT:

WorldTabBarクラス:

public class WorldTabBar extends Fragment { 


    Button world; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_world_tabbar, container, false); 




    world=rootView.findViewById(R.id.GoToWorld); 
      world.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

        Intent startIntent = new Intent(getContext(), MapsActivity.class); 
        startActivity(startIntent); 

    getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.no_anim); 

        } 
      }); 

    return rootView; 
    } 


    } 
+0

あなたは 'WorldTabBar'ためのコードを追加してください可能性:別のオプション - - 実行時にフラグメントを追加https://developer.android.com/training/basics/fragments/fragment-ui.html#AddAtRuntime

2)コードの変更は、それが活動するには? – Katharina

+0

コードにWorldTabBarクラスを追加しました。 – iBEK

+0

アクティビティクラスからフラグメントを開始する場合は、次のリンクを参照してください。https://teamtreehouse.com/community/starting-a-fragment-from-anactivityそれはあなたを助けるかもしれません。 – Opriday

答えて

1

java.lang.ClassCastException: com.example.name.app.WorldTabBar cannot be cast to android.app.Activity

あなたWorldTabBarはないActivityクラス、Fragmentを拡張します。

1)アクティビティを追加してから、WorldTabBarフラグメントを追加する必要があります。

例えば、目的と用途にマニフェストにこの活動を、それを登録、WorldTabBarActivityActivityを拡張作成:オプションの

一つは、(XMLを使用して)活性断片を追加するためには、ここで説明:https://developer.android.com/training/basics/fragments/creating.html。それがどのクラスを拡張しない -

public class WorldTabBar extends AppCompatActivity { 
+0

それから私は何を変えるのですか? – iBEK

関連する問題