如何在片段

时间:2016-02-16 01:44:20

标签: android android-fragments

:)

我正在尝试创建一个显示ListFragment的应用程序。 当用户单击ListFragment中的某个项目时 它会更改另一个活动的TextView中的文本。

到目前为止,我尝试过这种方法:

(这是在Fragment活动中,item是一个静态字符串)

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    item = ((TextView) v).getText().toString();

  Intent intent = new Intent(AboutFragment.this.getActivity(),Shower.class);
    startActivity(intent);

}
}

(这是在空活动中获取项目的字符串并使用它来确定在TextView上显示的内容)

TextView texter;

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

    texter = (TextView) findViewById(R.id.text);
    Setter();

    }


public void Setter(){
    switch (AboutFragment.item.toString()) {

        case "moon": texter.setText("Mortal");
        case "blue":texter.setText("Job");

    }
}

目前它只显示“作业”一词,当我点击另一个单词时它不会改变。我尝试使用onResume,但无济于事。

感谢您提供的任何帮助。 :)

2 个答案:

答案 0 :(得分:2)

您需要一个break语句来终止交换机的执行。如果没有它,就会执行“月亮”案例,然后立即执行“工作”案例,从而导致您描述的行为。

switch (AboutFragment.item.toString()) {

    case "moon": texter.setText("Mortal");
          break;// add this or else the next case will execute
    case "blue":texter.setText("Job");
          break;// you should add this too

}

答案 1 :(得分:2)

为什么你不使用putExtras()?也许它会做你想做的事。

实施例

1-首先onListItemClick()应该是这样的:

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
 super.onListItemClick(l, v, position, id);
 String text = l.getItemAtPosition(position).toString();
 Intent intent = new Intent(getActivity(),Shower.class);
 intent.putExtra("KeyString", text);
 getActivity().startActivity(intent);
}

2-在你的empty Activity中,你应该这样做:

TextView texter;
String myText;
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_shower);
 texter = (TextView) findViewById(R.id.text);
 Bundle extras = getIntent().getExtras(); 
 if (extras != null) {
    myText = extras.getString("KeyString");
 }
  Setter();
}


public void Setter(){
 switch (myText) {
     case "moon": texter.setText("Mortal");
      break;
     case "blue":texter.setText("Job");
      break;
}

}

希望它有所帮助......我试图解决你的问题,所以让我知道它是不是你想要的。