找不到片段PlaceholderFragment的id的视图

时间:2014-03-24 22:15:53

标签: java android android-fragments

我创建了一个主要活动,它会将我发送到ActiviteResultats个活动。

我的目标现在只是在此活动中显示一条消息(来自主要消息的消息)。

我关注了Starting Another Activity tutorial

问题是,当我开始ActiviteResultats活动时,我遇到了错误:

  

"找不到ID为0x7f080000的视图...........对于片段PlaceholderFragment"

......应用程序关闭。

我还不知道如何使用片段,教程说我不必在这个例子中使用它。

我哪里错了?

我的代码:

package com.example.surveyor;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class ActiviteResultats extends Activity {

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

    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new     PlaceholderFragment()).commit();
    }


    String message = "TODO";

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);


}



@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activite_resultats, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

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

}

3 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。只需删除部分:

if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }

这解决了我。希望有所帮助!

答案 1 :(得分:0)

快速浏览一下教程,可以看出大部分Fragment代码将在后续步骤中删除。如果要清除所有干扰,可以删除与片段相关的所有代码,以及有关选项菜单的位。它可能会解决您的问题,对该教程来说并不重要

答案 2 :(得分:0)

您需要做的是在主要活动中设置意图,然后在此处获取意图,如下所示:

Main_Activity.java下的

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

 Intent i = new Intent(this,activiteResultats.class); // or getApplicationContext() <= for context
 i.putExtras("TagOfMyMessage","MyMessageblablabla");
 startActivity(i);
 }
在ActivteResultats.java下

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

  Intent i = getIntent();
String message = i.getStringExtras(); // or something like it 

// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);

// Set the text view as the activity layout
setContentView(textView);
}

如果你想要一个清晰简单的教程,我建议你检查这个片段,你不需要使用片段:http://www.vogella.com/tutorials/AndroidIntent/article.html