确实需要一些建议,不知道这里出了什么问题。
上下文:2个片段,每个片段都有一个Textview,主要活动有2个按钮和一个edittext
目的:在主活动的edittext框中键入hello,然后单击片段1的按钮,textview将变为hello。
问题:
在edittext中输入hello并单击按钮1时,会遇到运行时错误。
Logcat:
E/AndroidRuntime(1291): FATAL EXCEPTION: main
E/AndroidRuntime(1291): android.view.InflateException: Binary XML file line #29: Error inflating class fragment
E/AndroidRuntime(1291): android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
E/AndroidRuntime(1291):android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
E/AndroidRuntime(1291):android.view.LayoutInflater.inflate(LayoutInflater.java:489)
E/AndroidRuntime(1291): android.view.LayoutInflater.inflate(LayoutInflater.java:396)
E/AndroidRuntime(1291): com.example.FragmentOne.onCreateView(FragmentOne.java:19)
E/AndroidRuntime(1291):android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829)
fragment_one.xml
<?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:background="#00ffff">
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="This is fragment No.1"
android:textStyle="bold" />
</LinearLayout>
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/easy"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="selectFrag"
android:text="Fragment No 1" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="selectFrag"
android:text="Fragment No 2" />
<fragment
android:name="com.example.FragmentTwo"
android:id="@+id/fragment_place"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void selectFrag(View view) {
Fragment fr;
if(view == findViewById(R.id.button2)) {
fr = new FragmentTwo();
}else {
fr = new FragmentOne();
}
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.commit();
}
}
FragmentOne.java
public class FragmentOne extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_one, container, false);
TextView monthlypayment= (TextView) view.findViewById(R.id.textView1);
EditText easy = (EditText) inflater.inflate(R.layout.activity_main, container, false).findViewById(R.id.easy);
monthlypayment.setText(easy.getText().toString());
return view;
}
}
您可以通过两种方式将片段添加到活动布局:
在活动的布局文件中声明该片段。
以编程方式将片段添加到现有的ViewGroup。
两种方法都在文档中提到
http://developer.android.com/guide/components/fragments.html
如果要将片段添加到容器中,则需要在xml中使用ViewGroup。一般FrameLayout
使用。所以在xml中有以下内容
<FrameLayout
android:id="@+id/fragment_place"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
活动代码很好。在“按钮”上单击,可以替换容器中的相应片段。
在您的片段中onCreateView
,为片段布局充气,并使用view对象初始化该布局的视图。但是您会膨胀activity_main.xml
,这不是必需的。
报价文件
具体来说,该片段可以使用getActivity()访问Activity实例,并轻松执行诸如在活动布局中查找视图之类的任务
所以EditText
你可以使用
EditText easy = (EditText)getActivity().findViewById(R.id.easy);
或者单击进行初始化EditText
,Activity
从Button
获取值EditText
,然后可以EditText
将从的值传递Activity
给Fragment
如您所见,当按下按钮时,main activity运行“GetFromuser”函数。我想在该函数中获取edittext值。我该怎么做呢?
我正在尝试创建searchdate。我在这里做的是 下面是 所以首先,我打开,它是一个片段。然后单击(编辑文本)后,它将显示(DatePickerFragment)。显示没有问题,也没有错误。 我的问题是,我怎么能设置值后,我选择日期从我的?
我所做的是创建了两个按钮,当按下一个按钮时,就会启动一个意图,片段中的区域设置也会改变。我通过获取所需的区域设置值来实现这一点,将其转换为字符串并将其放入额外的值中。它在活动之间工作得很好,但当我将其设置为片段时,它给了我一个错误 这是我的代码。 发送额外信息的活动: 接收区域设置的片段: 这给了我这行的错误。 我还尝试做了很多事情,比如将接收代码放在另一个地方,将其放在管理片段的活动中,但没有奏
我该怎么做?现在我得到一个:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法'void Android.Widget.TextView.SetText(java.lang.CharSequence)' FragmentRonde1.java 下面是片段的类,其中ListCLickedTitle为:ListClickedFragment logcat
我做错了什么? 这是我的XML文件。课文是德语的,我希望你能理解一切。否则请问我。
我有一个,它创建一个,然后这个创建另一个: 这让我想到。是否真的可以删除并转到? 提前感谢您的时间,我在网上找不到任何合适的信息!