0

皆様には大変ご迷惑をおかけして申し訳ありません。

私のアプリは完成しました。唯一の問題は、初めて表示されるウェルカム画面が新しいファイルが作成される場所であることです。このウェルカム スクリーンの sharedpref は、ファイルが読み込まれる main_activity にあります。

その結果、ファイルが作成される前にファイルを読み取ろうとしました。では、その解決策は何になるでしょうか?

メイン アクティビティのコード:

package com.omm.easybalancerecharge;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    SharedPreferences mPrefs;
    final String welcomeScreenShownPref = "welcomeScreenShown";

    EditText num;
    Button ch;
    TelephonyManager operator;
    String opname;
    TextView status;
    TextView setID;
    String myID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initialize();
        setstatus();
        setIDNO();
//Checks and displays Welcome Screen
        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref,
                false);

        if (!welcomeScreenShown) {
            Intent welcome = new Intent("android.intent.action.WELCOME");
            startActivity(welcome);
            SharedPreferences.Editor editor = mPrefs.edit();
            editor.putBoolean(welcomeScreenShownPref, true);
            editor.commit();
        }
    //Reading Data from the file to be created at welcome screen for the first time.
        myID = readData();
        recharge();
    }

    //readData method
    protected String readData() {
        // TODO Auto-generated method stub
        String ret = "";
        try {
            FileInputStream fIN = openFileInput("iqid");
            InputStreamReader in = new InputStreamReader(fIN);
            BufferedReader br = new BufferedReader(in);
            ret = br.readLine();
        } catch (FileNotFoundException e) {
            Log.e("ID ACTIVITY", "File Not Found");
        } catch (IOException e) {
            Log.e("ID ACTIVITY", "Cannot Read From File");
        }
        return ret;
    }

}

初めてのウェルカム画面のコード:

package com.omm.easybalancerecharge;

import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class FirstTime extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_time);

        final EditText ID = (EditText) findViewById(R.id.IDNO);
        Button save = (Button) findViewById(R.id.sButton);
        save.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {
                    String myFile = ID.getText().toString();
                    FileOutputStream fOS = openFileOutput("iqid", Context.MODE_PRIVATE);
                    fOS.write(myFile.getBytes());
                    Toast.makeText(getBaseContext(), "ID Saved",
                            Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    Log.e("Exception", "Save Failed");
                } finally {
                    finish();
                }
            }
        });
    }
}

FC なしでアプリを正常に実行できないのは、この問題だけです。もちろん、すべての権限はマニフェストで設定されます。

編集:そして、どうやらファイルはまったく作成されていないようです:/

4

1 に答える 1

1

startActivityForResult を使用する必要があります。

Intent i = new Intent(this, FirstTime.class);
startActivityForResult(i, 1);

FirstTime では、MainActivity に戻したいデータを設定します。戻したくない場合は、何も設定しないでください。

例: FirstTime でデータを送り返したい場合

 Intent returnIntent = new Intent();
 returnIntent.putExtra("result",result);
 setResult(RESULT_OK,returnIntent);     
 finish();

データを返したくない場合

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);        
finish();

MainActivity クラスで、 onActivityResult() メソッドの次のコードを記述します

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {  
    //Reading Data from the file to be created at welcome screen for the first time.
    myID = readData();
    recharge();

これでうまくいくはずです。

于 2013-01-17T22:51:10.547 に答える