无法从片段

时间:2017-10-11 10:29:51

标签: java android android-fragments

我正在尝试通过片段从我的原始文件夹中打开file.txt。 这是我在 KonsumerFragment.java

上的代码
public class KonsumerFragment extends Fragment implements View.OnClickListener{

public KonsumerFragment() {
    // Required empty public constructor
}

float marginValue;
Spinner spinnerProduct;
Spinner spinnerType;
EditText pengajuan;
EditText tenor;
TextView tvAngsuran;
String[] arrayMargin;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_konsumer, container, false);
    //Define Variables
    spinnerProduct = (Spinner) v.findViewById(R.id.spinnerProduct) ;
    spinnerType = (Spinner) v.findViewById(R.id.spinnerType);
    pengajuan = (EditText) v.findViewById(R.id.etPengajuan);
    tenor = (EditText) v.findViewById(R.id.etTenor);

    // Inflate the layout for this fragment


    Button hitung = (Button) v.findViewById(R.id.btnHitung);
    hitung.setOnClickListener(this);

    return v;
}

@Override
public void onClick(View view) {
    try {
        switch (view.getId()){
            case R.id.btnHitung :
                //simulate();
                readMargin();
            break;
        }
    } catch (Exception e){
        e.getCause();
        e.printStackTrace();
    }
}

public void readMargin() throws FileNotFoundException {
    try {
        InputStream in = getContext().getResources().openRawResource(R.raw.margingriyafix);
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));

        String line = reader.readLine();
        String result = "";
        while(line !=null){
            result += line + "\n";
        }

        arrayMargin = result.split("\\n");
        for (int i=0 ; i<arrayMargin.length ; i++){
            System.out.println(arrayMargin[i]);

        }
        System.out.println(arrayMargin);
    } catch (Exception e){
        System.out.println(e);
        e.getCause();
    }
}

}

MainActivity.java

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    KonsumerFragment konsFragment = new KonsumerFragment();
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.frameLayout, konsFragment);
    transaction.commit();

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);


}



@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_konsumer) {
        KonsumerFragment konsFragment = new KonsumerFragment();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.frameLayout, konsFragment);
        transaction.commit();
    } else if (id == R.id.nav_produktif) {
        ProduktifFragment prodFragment = new ProduktifFragment();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.frameLayout, prodFragment);
        transaction.commit();

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

读取文件的部分是正确的。我测试了它直接在MainAcivity上运行。但它不会在片段上运行。它已成功运行一个Activity,我相信问题来自InputStream,但无论如何我试过像

getActivity().getResources().openRawResource(R.raw.margingriyafix);

以及

getContext().getResources().openRawResource(R.raw.margingriyafix);

仍然无法正常工作。 请任何人帮助我。

0 个答案:

没有答案