クラス・フラグメントを拡張してMainActivity.javaクラスを指し示す際に、アンドロイド・ビューで例外エラーが発生しました。エラーがないため、見つからないようにしようとしています。アンドロイドスタジオでは、仮想デバイスで実行中にエラーが表示されます。クラス・フラグメントをinflateする際にエラーが発生しました
activity_main.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.ai_agamcompaq.flexible.MainActivity">
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.example.ai_agamcompaq.flexible.FragmentA"
android:id="@+id/fragment"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="26dp" />
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.example.ai_agamcompaq.flexible.FragmentB"
android:id="@+id/fragment2"
android:layout_below="@+id/fragment"
android:layout_alignStart="@+id/fragment"
android:layout_marginTop="39dp" />
</RelativeLayout>
MainActivity.java
import android.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity implements Communicator{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void respond(int i) {
FragmentManager manager=getFragmentManager();
FragmentB f2= (FragmentB) manager.findFragmentById(R.id.fragment2);
f2.changedata(i);
}
}
FragmentA.java
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class FragmentA extends Fragment implements
AdapterView.OnItemClickListener {
ListView list;
Communicator communicator;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
communicator=(Communicator)getActivity();
list= (ListView) getActivity().findViewById(R.id.listView);
ArrayAdapter adapter=ArrayAdapter.createFromResource(getActivity(),R.array.titles,android.R.layout.simple_list_item_1);
list.setAdapter(adapter);
list.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
communicator.respond(i);
}
FragmentB.java
import android.app.Fragment;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
public class FragmentB extends Fragment {
TextView text;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_b,container,false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
text=(TextView) getActivity().findViewById(R.id.textView);
}
public void changedata(int i){
Resources res=getResources();
String[] description=res.getStringArray(R.array.description);
text.setText(description[i]);
}
}
Communicator.java
public interface Communicator {
public void respond(int i);
}
fragment_b.xml
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:id="@+id/editText" />
</LinearLayout>
fragment_a.xml
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentLeft="true"
android:id="@+id/listView" />
のstrings.xml
<resources>
<string name="app_name">flexible</string>
<string-array name="titles">
<item>one</item>
<item>two</item>
<item>three</item>
<item>four</item>
</string-array>
<string-array name="description">
<item>oneoneoneoneoneoneoneoneoneoneo</item>
<item>twotwotwotwotwotwotwotwotwotwo</item>
<item>threethreethreethreethreethreethr</item>
<item>fourfourfourfourfourfourfourfourfo</item>
</string-array>
</resources>
私はエラーに何かを持っていますそのアンドロイドビューインフレート例外エラーのように書かれてクラスフラグメントを膨張させ、MainActivity.javaを指すクラス、私はアンドロイドスタジオにエラーがないように見つけるが、まだ運がないようにしようとしているが、仮想デバイスで実行中のエラーが表示されます。
show logcat please –
あなたは 'FragmentA'の' onCreateView() 'であなたのレイアウトを膨らませて返しません。しかし、現在の問題が何であるかを確かめるために、完全なスタックトレースを確認する必要があります。 –