私は新しいAndroid開発者であり、Javaプログラミングの初心者です。私はカープールアプリを開発していますが、いくつかの問題が発生しています。私は3ページでタブ付きアクティビティを使用していますが、1つしか問題を引き起こしています。私は浮動アクションボタンをクリックしたときにEditTextデータを取得したいが、何も動作していない。タブフラグメントのEditTextからgetText()を取得する方法
編集:containerNovoは私ViewPager mViewPagerのIDですPlaceholderFragment frag = (PlaceholderFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.containerNovo + ":" + mViewPager.getCurrentItem());
を、追加することによって解決問題。
私のメインXMLファイル:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/azul"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/PopupOverlay">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/azulclaro"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/containerNovo"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabNovo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/fab_margin"
android:src="@drawable/check" />
私のメインのJavaコード:
package petma.testesappcarona;
public class NovaCarona extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
FloatingActionButton fab;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nova_carona);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.containerNovo);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
fab = (FloatingActionButton) findViewById(R.id.fabNovo);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(NovaCarona.this, "input_nome.getText().toString()", Toast.LENGTH_SHORT).show();
}
});
}
断片コード:
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment implements View.OnClickListener {
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
EditText input_nome,input_data, input_horario, input_saida, input_chegada, input_Recado;
Spinner input_pessoas;
SessionManager session;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_nova_carona, container, false);
session = new SessionManager(getContext());
session.checkLogin();
input_data = (EditText)rootView.findViewById(R.id.input_data);
assert input_data != null;
input_data.setOnClickListener(this);
input_horario = (EditText) rootView.findViewById(R.id.input_horario);
assert input_horario != null;
input_horario.setOnClickListener(this);
input_chegada = (EditText)rootView.findViewById(R.id.input_chegada);
input_saida = (EditText)rootView.findViewById(R.id.input_saida);
input_nome = (EditText)rootView.findViewById(R.id.input_nome);
input_pessoas = (Spinner)rootView.findViewById(R.id.input_pessoas);
input_Recado = (EditText) rootView.findViewById(R.id.input_Recado);
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
return rootView;
}
@Override
public void onClick(View view) {
if (view == input_data){
int mYear, mMonth, mDay;
// Get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
input_data.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
}
}, mYear, mMonth, mDay);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
datePickerDialog.show();
}
else if (view == input_horario){
int mHour, mMinute;
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(),
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
if(minute <= 9){
input_horario.setText(hourOfDay + ":"+"0"+minute);
}
else{
input_horario.setText(hourOfDay + ":" + minute);
}
}
}, mHour, mMinute, false);
timePickerDialog.show();
}
}
}
"input_nome.getText()。toString()"部分を置換したいと思います。私はPlaceholderFragmentを使用しようとしましたが、フラグメントのIDは何か分かりません。私は人々がPlaceholderFragmentとTabbed Activityを使用したコードは見つけられませんでした。
例外が発生していますか?もしそうなら、スタックトレースをポストできますか?何がうまくいかないの?アプリは 'fab.onClick'イベントに対してどのように動作していますか? – px06
あなたの 'TextView'は、' NovaCarona'の活動では開始されない可能性があります。それが定義されているビューを膨らませてください( 'findViewById')。 –
私は使用しました 'PlaceholderFragment frag =(PlaceholderFragment)getSupportFragmentManager()。findFragmentById(R.id.containerNovo); Toast.makeText(NovaCarona.this、frag.input_nome.getText()。toString()、Toast.LENGTH_SHORT).show(); ' これでEditTextからデータを受け取ることができます。何か案は? –