2015-10-20 66 views
0

即时通讯在android开发中还是一个新东西。 我想刷新我的片段,并在该片段中获得新的imageButton背景,但我一直未能做到这一点。刷新片段后更改Imagebutton背景

这是我的主要活动

public class MainActivity extends AppCompatActivity { 

    public int QuestionNum =0; 

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

     final MainActivityFragment MainFrag = new MainActivityFragment(); 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.content, MainFrag).commit(); 

    } 

    public void Answer1(View view){ 

     QuestionNum++; 
     Stage StageFrag = new Stage(); 
     getSupportFragmentManager().beginTransaction() 
     .replace(R.id.content,StageFrag).commit(); 
    } 

,这是我的片段

public class Stage extends Fragment { 

    public Stage() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_stage, container, false); 

     MainActivity Main = new MainActivity(); 
     String QuestionInd[] = getResources().getStringArray(R.array.Qind); 
     Integer AnswerAnimal[]={R.drawable.anjing,R.drawable.kucing....}; 

     int QNum = Main.QuestionNum; 

     TextView Question = (TextView) view.findViewById(R.id.Questions); 
     Question.setText(QuestionInd[Main.QuestionNum]); 

     ImageButton Ans1 = (ImageButton) view.findViewById(R.id.Choice1); 
     ImageButton Ans2 = (ImageButton) view.findViewById(R.id.Choice2); 
     ImageButton Ans3 = (ImageButton) view.findViewById(R.id.Choice3); 
     ImageButton Ans4 = (ImageButton) view.findViewById(R.id.Choice4); 


     switch(QNum) { 
      case 0: 
       Ans1.setBackgroundResource(AnswerAnimal[0]); 
       Ans2.setBackgroundResource(AnswerAnimal[1]); 
       Ans3.setBackgroundResource(AnswerAnimal[2]); 
       Ans4.setBackgroundResource(AnswerAnimal[3]); 
       break; 
      case 1: 
       Ans1.setBackgroundResource(AnswerAnimal[8]); 
       Ans2.setBackgroundResource(AnswerAnimal[9]); 
       Ans3.setBackgroundResource(AnswerAnimal[5]); 
       Ans4.setBackgroundResource(AnswerAnimal[4]); 
       break; 
     } 

     return view; 
    } 
} 

我没有在我的logcat中出现错误。我也尝试使用添加,但背景并没有改变只有碎片保持堆叠。使用attach和retach也没有用。

请帮我解释我的错误。我真的很想了解这一点。谢谢。

回答

0

首先,从来没有做到这一点:

MainActivity Main = new MainActivity(); 

解释here。第二种:即使您将Android Activity视为普通Java类,那么new MainActivity()意味着您正在创建该类的新实例,因此实例变量将是您定义它们的方式或方式,即public int QuestionNum =0将保持不变。 因此,switch语句永远不会来到case: 1

你可以做的只是调用一些方法,如StageFrag上的changeImageButtons()对象。

+0

Thx Archie,我会按照你的建议。仍试图找到一种方法来获取changeImageButtons()的工作。 –

+0

'changeImageButtons()'将有'case 1:'代码。但不要在分段事务之后尽快调用该方法,因为它可能尚未创建UI。只要看看你的上面的代码,你不需要任何改变ImageButtons为什么你不只是初始化案例1资源的用户界面? –

+0

当用户点击答案按钮时,我想要使用10种不同的图像背景。我想学习多次使用1片段,但我不太确定如何做到这一点。我会尽我所能解决这个问题。感谢您的帮助^^。 –