私は、ボタンを使って情報を1つのフラグメントに入力し、その情報をアクティビティに戻し、取得した情報を表示する別のものにフラグメントを置き換えるアプリケーションを作っています最初の断片から。ただし、「com.example.cribbage2.CardKeyboardFragをcom.example.cribbage2.PCResultsFragにキャストできません」というエラーが表示され、その理由がわかりません。ここで"フラグメントに例外をキャストすることはできません
は、アクティビティの関連するコードです:
package com.example.cribbage2;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.os.Bundle;
import java.util.Arrays;
public class PointCalculator extends FragmentActivity implements CardKeyboardFrag.InfoTransfer {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_point_calculator);
//set cardKeyboardFrag
CardKeyboardFrag cardFrag = new CardKeyboardFrag();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragment_container, cardFrag);
transaction.addToBackStack(null);
transaction.commit();
//tell fragment how many cards you are requesting
}
public void cardNumSet(int cardNumMin, int cardNumMax){
CardKeyboardFrag cardKeyboardFrag = (CardKeyboardFrag) getSupportFragmentManager().findFragmentById(R.id.fragment_container);
cardKeyboardFrag.cardNumGet(cardNumMin, cardNumMax);
}
public void displayResults(int[] resultsIntArray){
//parse intArray into String
String[] resultsStringArray = new String[4];
int loop = 0;
for (int num: resultsIntArray){
resultsStringArray[loop] = Integer.toString(num);
loop++;
}
//transfer to new fragment
PCResultsFrag resultsFrag = new PCResultsFrag();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, resultsFrag);
transaction.addToBackStack(null);
transaction.commit();
//this is the line where the error occurs
PCResultsFrag pcResultsFrag = (PCResultsFrag) getSupportFragmentManager().findFragmentById(R.id.fragment_container);
pcResultsFrag.getResultsArray(resultsStringArray);
}
まあ、 ' R.id.fragment_container'はあなたが既に行ったように 'CardKeyboardFrag'を返します前の行 'CardKeyboardFrag cardKeyboardFrag =(CardKeyboardFrag)getSupportFragmentManager()。findFragmentById(R.id.fragment_container);'。しかしここでは互換性のない 'PCResultsFrag'にキャストしようとしています。 – QBrute
だから解決策は何ですか? PCResultsFragをどのようにして容器に入れるのですか?または、コンテナからCardKeyboardFragを削除しますか? –
@QBrute ^^^^^^^^ –