我对android很新。我正在制作一个自定义吐司,但是应用程序在屏幕上出现吐司之后就崩溃了。 这是我的mainactivity.java -
'akash@gmail.com','Akash',101,102
and
'akash@gmail.com','Akash2',101,102
这些是我的xml文件。
toast_layout.xml -
public class MainActivity extends Activity {
int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void dosome(View V) {
Log.d("message","a message");
if(V.getId() == R.id.launchmap) {
Toast toast = new Toast(this);
toast.setGravity(Gravity.BOTTOM, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
LayoutInflater inflater = getLayoutInflater();
View appear = inflater.inflate(R.layout.toast_layout,(ViewGroup)findViewById(R.id.root),true);
toast.setView(appear);
toast.show();
}
}
}
activity_main.xml -
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/images" />
但是,在inflater.inflate中,如果我将第3个参数传递为false,则一切正常。为什么这样?
答案 0 :(得分:0)
东西吐司不应该是你视图中某些布局的孩子,它是一个独立的布局。这是你的吐司的布局(在你的情况下是toast_layout.xml)。
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/images" />
你需要用布局包装它,让我们说一个LinearLayout并为该特定的linearLayout提供id toast_layout_root。像这样
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/toast_layout_root">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/images" />
</LinearLayout>
然后在制作祝酒词时执行此操作
查看appear = inflater.inflate(R.layout.toast_layout,(ViewGroup)findViewById(R.id.toast_layout_root),true);
您当前正在尝试将toast附加到您活动中的linearlayout。祝酒词必须独立。