2014-06-27 106 views
0

我的Android应用程序出现问题。如果我为textView使用setText()方法,我有问题:应用程序意外停止。请再试一次。Android应用程序:“应用程序意外停止” - 使用setText()方法

代码的应用程序:

public class TC1 extends ActionBarActivity { 

private TextView textView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_tc1); 

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


    textView = (TextView)findViewById(R.id.textView); 
    textView.setText("Hi"); // wrong line 
} 
... 
} 

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.tc.TC1$PlaceholderFragment" > 

<TextView 
    android:id="@+id/textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="35dp" 
    android:layout_marginTop="20dp" 
    android:text="Text" /> 

</RelativeLayout> 
+0

logcat的我的朋友logcat的? – Skynet

+0

你确定@ + id/textView在activity_tc1.xml中吗? –

+0

是的。我解决了这个问题,感谢我的帮助;) – user3770088

回答

0

你的TextView是片段的XML的一部分,但你尝试从活动布局得到它。将findViewById()电话转到您的Fragment的onCreateView()方法。

对于将来的问题: 请不要引用"The Application has stopped unexpectedly"而是检查LogCat输出的错误消息和堆栈跟踪。您引用的错误消息是用户的默认崩溃信息,没有任何内容为我们的开发人员提供任何详细信息。

+0

好吧,我记得。感谢您的帮助。 – user3770088

0

添加到您的代码

View view = inflater.inflate(R.layout.fragment_blank, R.id.container,false); 

和改变

textView = (TextView)findViewById(R.id.textView); 

这个

的TextView =(TextView的)view.findViewById(R.id.textView) ;

您的代码当前正试图访问您的主活动视图,其中不包含您的textview。另一种选择是通过你的片段以类似的方式访问它。

+0

我无法创建inflater instantion,但我解决了这个问题的其他代码。感谢帮助。 – user3770088

0

看起来textviewfragment的一部分而不是activity_tc1

因此,要么使用textviewactivity_tc1布局。或在onCreateView片段中使用textviewfragment_tc1将成为你的片段名称。

例如

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

      TextView textView = (TextView) rootView.findViewById(R.id.textView); 
      textView.setText("Hi"); 
      return rootView; 
     } 
+0

非常感谢你,你的代码工作:) – user3770088

+0

@ user3770088乐于帮助,如果这个答案帮助你,那么请接受它,所以它也可以帮助别人,也有类似的问题,无论如何享受编码。 –