Android:TextView让app停止

时间:2013-09-05 17:43:44

标签: android textview

我创建了一个CalendarView,每当您选择一个新活动的日期时,我会创建一个TextView。在该新活动中,我放了一个按钮和一个TextView,我希望显示public class CalendarDate extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calendar_date); Bundle extras = getIntent().getExtras(); String dday = extras.getString("currentday"); String dmonth =extras.getString("currentmonth"); String dyear = extras.getString("currentyear"); ActionBar ab = getActionBar(); ab.setTitle(dday+"/"+dmonth+"/"+dyear ); Bundle extraz =getIntent().getExtras(); String display = extras.getString("EXTRA_MESSAGE"); LinearLayout layout=(LinearLayout) this.findViewById(R.id.Layout); EditText editText=(EditText) this.findViewById(R.id.textView); Button button=(Button) this.findViewById(R.id.btnAdd); LayoutParams lparams = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); TextView tv=new TextView(this); tv.setLayoutParams(lparams); tv.setText(display); layout.addView(tv); } public void sceduleEdit(View view) { Intent intent = new Intent(this, EditSc.class); startActivity(intent); } 一个字符串。问题是,当我选择日期时,会显示一条消息,显示“不幸”,project_name“已停止!”。

这是新活动的代码:

<LinearLayout 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="CalendarDate" 
android:orientation="vertical"
android:id="@+id/Layout">

  <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/btnAdd"
    android:layout_width="100dip"
    android:layout_height="wrap_content"
    android:layout_marginBottom="34dp"
    android:layout_marginLeft="88dp"
    android:onClick="sceduleEdit" /> 

}

这是XML:

LinearLayout layout=(LinearLayout) this.findViewById(R.id.Layout);
EditText     editText=(EditText) this.findViewById(R.id.textView);
Button       button=(Button) this.findViewById(R.id.btnAdd);

    LayoutParams lparams = new LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            TextView tv=new TextView(this);
            tv.setLayoutParams(lparams);
            tv.setText(display);
            layout.addView(tv);

如果删除以下代码,则活动将按原样打开

{{1}}

你有什么想法为什么会这样吗?很抱歉这个问题很长,非常感谢!

3 个答案:

答案 0 :(得分:3)

您的布局是

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

你有:EditText editText=(EditText) this.findViewById(R.id.textView);

我想这里有一个 ClassCastException ,因为TextView无法强制转换为EditText,因此你的应用程序崩溃了。

AFAIK,这应该是TextView textView=(TextView) this.findViewById(R.id.textView);

答案 1 :(得分:0)

您正在使用的字符串“display”可能为null。记录您在该字符串中获得的值。同样在你的代码中,你正在使用的bundle变量是带有'z'的extraz,如果你得到nullpointer,那么试着用's'.c d logcat读取它。

Bundle extraz =getIntent().getExtras();
String display = extras.getString("EXTRA_MESSAGE");

此外,您的xml在您的活动中没有编辑text.check for textview而不是editext。

答案 2 :(得分:0)

您正在对代码中的编辑文本进行类型转换。在代码中将EditText更改为TextView,否则会产生类强制转换异常