我尝试构建一个使用toast显示图像的应用程序...在eclipse中它没有显示任何错误......但是当执行时,按钮点击后输出弹出的时间只有几分之一,问题来了,显示"不幸的是app停止了#34; ...我的MainActivity.java中的代码如下:
package com.example.newt;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void doThis(View v)
{
Toast t=new Toast(this);
t.setGravity(Gravity.CENTER,0,0);
LayoutInflater l=getLayoutInflater();
View appear=l.inflate(R.layout.custom_lay,(ViewGroup)findViewById(R.id.boss));
t.setView(appear);
t.show();
}
}
我的xml文件" activity_main.xml"和" custom_lay.xml"分别如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/boss"
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.newt.MainActivity" >
<Button
android:id="@+id/button10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click here"
android:onClick="doThis" />
</LinearLayout>
<?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:orientation="vertical"
android:id="@+id/boss">"
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="41dp"
android:layout_weight="0.02"
android:text="TextView" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.22"
android:src="@drawable/ic_launcherto" />
</LinearLayout>
答案 0 :(得分:0)
1。)你没有发布你的异常堆栈跟踪
2。)我认为您的问题是您使用Toast t = new Toast()
而不是Toast.makeText(Context, String, int).show()
int
Toast.LENGTH_SHORT
或Toast.LENGTH_LONG
创建了祝酒词。
答案 1 :(得分:0)
public class MainActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void doThis(View v)
{
Toast t=new Toast(getApplicationContext());
t.setGravity(Gravity.CENTER,0,0);
View appear = getLayoutInflater().inflate(R.layout.custom_lay, null);
t.setView(appear);
t.show();
}
}
答案 2 :(得分:0)
我相信你在传递
行的根视图时犯了一些错误View appear=l.inflate(R.layout.custom_lay,(ViewGroup)findViewById(R.id.boss));
尝试在root视图中传递null,如下所示
View appear=l.inflate(R.layout.custom_lay,null);
答案 3 :(得分:0)
这样做,
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context context = getApplicationContext();
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.toast, null);
Toast toast = new Toast(context);
toast.setView(view);
toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
}}
答案 4 :(得分:0)
我猜你在这里有两种可能的解决方案。
您有以下代码:
View appear=l.inflate(R.layout.custom_lay,(ViewGroup)findViewById(R.id.boss));
可以使用以下任一方法修改:
1)
View appear=l.inflate(R.layout.custom_lay,(LinearLayout)findViewById(R.id.boss));
2)
View appear=l.inflate(R.layout.custom_lay, null);
答案 5 :(得分:0)
此代码抛出java.lang.IllegalArgumentException: View not attached to window manager
。如果您在行下面更改
LinearLayout layout = (LinearLayout)inflater.inflate(R.layout.custom_lay,(ViewGroup) findViewById(R.id.boss));
到:
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.custom_lay, null);
它运作得很好。
说明:当您调用inflater.inflate
时,根参数是可选的,并且应该是您尝试充气的布局的父级(例如,你试图在列表视图中为单行扩充视图,你将列表视图作为父视图。
我的猜测是,在您的代码中,R.layout.custom_lay
没有任何父级?在这种情况下,父级应该为空。