为什么我在setText()
收到错误?
如果我从应用程序中删除它可以正常工作,我也尝试了append()
。
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.problema1multi.MainActivity$PlaceholderFragment" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="17dp"
android:orientation="vertical" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="35dp"
android:background="@drawable/botones"
android:onClick="misteri"
android:text="Misteri"
android:width="500dp" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/button2"
android:layout_below="@+id/button2"
android:layout_marginTop="28dp"
android:background="@drawable/botones"
android:onClick="risa"
android:text="Risa"
android:width="500dp" />
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="16dp"
android:background="@drawable/botones"
android:onClick="guerra"
android:text="Guerra"
android:width="500dp" />
</LinearLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/linearLayout1"
android:layout_alignParentRight="true"
android:layout_below="@+id/linearLayout1"
android:layout_marginTop="58dp"
android:text="TextView" />
</RelativeLayout>
MainActivity
:
public class MainActivity extends ActionBarActivity {
private Button boton1;
private Button boton2;
private Button boton3;
private TextView mensaje;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
boton1 = (Button) findViewById(R.id.button1);
boton2 = (Button) findViewById(R.id.button2);
boton3 = (Button) findViewById(R.id.button3);
mensaje = (TextView) findViewById(R.id.textView1);
}
public void detener(View v) {
if (mp != null) {
mp.stop();
}
}
public void risa(View arg0) {
detener(arg0);
mp = MediaPlayer.create(MainActivity.this, R.raw.risas);
mp.start();
mensaje.setText("Reproduciendo Risa");
}
谢谢!
答案 0 :(得分:0)
您已发布片段xml,但您尝试从活动中引用这些视图。您发布的代码与您发布的XML不匹配。您发布的代码引用了activity_main.xml
textView1
中没有标识为activity_main.xml
的TextView,因此当您尝试在其上调用NullPointerException
时,这会导致setText
。
我建议您再次阅读片段与活动 - 如果这是一个简单的应用程序,您可能根本不需要片段,只能在活动中完成所有操作。
http://developer.android.com/guide/components/fragments.html
答案 1 :(得分:0)
您发布的Java代码似乎是您的Activity
代码,但XML是您的Fragment
XML。我认为你使用IDE向导来生成一个带片段的活动,所以这会从一个简单的Activity中稍微改变一下。
选项1:
在扩充XML布局后,将mensaje = (TextView) findViewById(R.id.textView1);
移到Fragment
onCreateView()
方法中,例如:
TextView mensaje;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.main, container, false);
mensaje = (TextView) rootView.findViewById(R.id.textView1);
}
选项2:
使用您在XML
中发布的Activity
,例如,如果XML为main.xml
,则Activity
中必须使用setContentView(R.id.main);
< / p>
您应该阅读有关Fragments的更多信息,以了解它们的工作原理。另请注意,在使用Activity
的{{1}}中,只会返回您使用findViewById()
夸大的XML的引用,因此您的ID setContentView()
必须位于textView1
布局中。< / p>