TextView setText() не работает

#java #android

#java #Android

Вопрос:

У меня следующая проблема в моем приложении для Android:

setText не изменяет текст textviews

Некоторые строки и двойные значения должны быть отправлены через intent и должны отображаться в textviews

часть кода, в которой я отправляю дополнительные сообщения:

 private void showInfo(PointOfInterest poi){
        Intent intent  = new Intent(this, ShowInfo.class);
        intent.putExtra("name", poi.getName().toString());
        intent.putExtra("city", poi.getCity().toString());
        intent.putExtra("country", poi.getCountry().toString());
        intent.putExtra("date", poi.getDate().toString());
        intent.putExtra("comment", poi.getComment().toString());
        intent.putExtra("cat", poi.getCategorie().toString());
        intent.putExtra("lng", poi.getLng());
        intent.putExtra("lat", poi.getLat());

        startActivity(intent);
    }
  

я пытаюсь отобразить их:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    setContentView(R.layout.fragment_show_info); 
    namePoi = intent.getStringExtra("name");
    TextView name = (TextView) findViewById(R.id.showNameInfo);
    TextView city = (TextView) findViewById(R.id.showCityInfo);
    TextView country = (TextView) findViewById(R.id.showCountryInfo);
    TextView date = (TextView) findViewById(R.id.showDateInfo);
    TextView comment = (TextView) findViewById(R.id.showCommentInfo);
    TextView cat = (TextView) findViewById(R.id.showCatInfo);

    lat = intent.getDoubleExtra("lat", 0);
    lng = intent.getDoubleExtra("lng", 0);
    TextView latView = (TextView) findViewById(R.id.showLatInfo);
    TextView lngView = (TextView) findViewById(R.id.showLngInfo);
    Log.d("debug", intent.getStringExtra("cat"));
    CharSequence tmp = intent.getStringExtra("name");
    name.setText(tmp);
    city.setText(intent.getStringExtra("city"));
    country.setText(intent.getStringExtra("country"));
    date.setText(intent.getStringExtra("date"));
    comment.setText(intent.getStringExtra("comment"));
    name.setText(intent.getStringExtra("name"));
    cat.setText(intent.getStringExtra("cat"));
    lngView.setText(String.valueOf(lng));
    latView.setText(String.valueOf(lat));
    setContentView(R.layout.activity_show_info); 
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
        .add(R.id.container, new PlaceholderFragment()).commit();
    }
}
  

фрагмент xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.pointsofinterest.ShowInfo$PlaceholderFragment" >

<TableLayout
    android:id="@ id/tableLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" >

    <TableRow
        android:id="@ id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Name:" />

        <TextView
            android:id="@ id/showNameInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />
    </TableRow>

    <TableRow
        android:id="@ id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Date:" />

        <TextView
            android:id="@ id/showDateInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />
    </TableRow>

    <TableRow
        android:id="@ id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Country:" />

        <TextView
            android:id="@ id/showCountryInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />
    </TableRow>

    <TableRow
        android:id="@ id/tableRow4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="City:" />

        <TextView
            android:id="@ id/showCityInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />
    </TableRow>

    <TableRow
        android:id="@ id/tableRow5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Latitude:" />

        <TextView
            android:id="@ id/showLatInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />
    </TableRow>

    <TableRow
        android:id="@ id/tableRow8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Longitude:" />

        <TextView
            android:id="@ id/showLngInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />
    </TableRow>

    <TableRow
        android:id="@ id/tableRow7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Categorie:" />

        <TextView
            android:id="@ id/showCatInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />
    </TableRow>

    <TableRow
        android:id="@ id/tableRow9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@ id/textView8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Comment:" />

        <TextView
            android:id="@ id/showCommentInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" " />

    </TableRow>

    <TableRow
        android:id="@ id/tableRow6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@ id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="54dp"
            android:text="Show on Map" 
            android:onClick="showOnMap"/>

    </TableRow>

</TableLayout>
  

в logcat нет ошибок, я просто вижу свою активность с пустыми текстовыми представлениями

Комментарии:

1. Что находится в PlaceholderFragment? Если вы используете фрагменты, вы должны создавать представление в методе onCreateView() фрагмента. И, конечно, предоставьте данные намерения фрагменту как PlaceholderFragment.setArguments(GetIntent().getExtras()); И вам нужно сказать больше об ошибке, чем просто «не работает». В чем ошибка? Что такое logcat?

Ответ №1:

Ваша функция onCreate() неверна.

 ....

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    setContentView(R.layout.activity_show_info); 
    PlaceholderFragment fragment = new PlaceholderFragment();
    fragment.setArguments(intent.getExtras());
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
        .add(R.id.container, fragment).commit();
    }
}
  

Заполнитель фрагмента:

 ...

@Override
public View onCreateView(LayoutInflater inflater,  ViewGroup container, Bundle savedInstanceState)
{
    View view = inflater.inflate(R.layout.fragment_show_info, container, false);
    namePoi = intent.getStringExtra("name");
    name = (TextView) view.findViewById(R.id.showNameInfo);
    city = (TextView) view.findViewById(R.id.showCityInfo);
    country = (TextView) view.findViewById(R.id.showCountryInfo);
    date = (TextView) view.findViewById(R.id.showDateInfo);
    comment = (TextView) view.findViewById(R.id.showCommentInfo);
    cat = (TextView) view.findViewById(R.id.showCatInfo);

    lat = getArguments().getDouble("lat", 0);
    lng = getArguments().getDouble("lng", 0);
    latView = (TextView) view.findViewById(R.id.showLatInfo);
    lngView = (TextView) view.findViewById(R.id.showLngInfo);
    Log.d("debug", getArguments().getString("cat"));
    CharSequence tmp = getArguments().getString("name");
    name.setText(tmp);
    city.setText(getArguments().getString("city"));
    country.setText(getArguments().getString("country"));
    date.setText(getArguments().getString("date"));
    comment.setText(getArguments().getString("comment"));
    name.setText(getArguments().getString("name"));
    cat.setText(getArguments().getString("cat"));
    lngView.setText(String.valueOf(lng));
    latView.setText(String.valueOf(lat));
    return view;
}