首页 文章

使用空白Acticity时崩溃的记事本应用程序[重复]

提问于
浏览
-1

这个问题在这里已有答案:

this is what the android monitor is showing:

08-26 19:04:17.456 10081-10089 /? E / art:向调试器发送回复失败:断管08-26 19:04:17.456 10081-10089 /?我/艺术:调试器不再有效08-26 19:04:17.582 10081-10081 /? I / InstantRun:启动即时运行服务器:主流程为08-26 19:04:17.628 10081-10081 /? W / art:在Android 4.1之前,方法android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter,android.content.res.ColorStateList,android.graphics.PorterDuff $ Mode)会有错误地覆盖了android.graphics.drawable.Drawable 08-26 19:04:17.736 10081-10081 /中的package-private方法D / AndroidRuntime:关闭VM 08-26 19:04:17.736 10081-10081 /? E / AndroidRuntime:FATAL EXCEPTION:main进程:com.example.sayandeep.notepad,PID:10081 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.sayandeep.notepad / com.example.sayandeep.notepad.MainActivity }:java.lang.NullPointerException:尝试在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)上的空对象引用上调用虚方法'void android.widget.EditText.setText(java.lang.CharSequence)'在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)在android.app.ActivityThread.access $ 800(ActivityThread.java:151)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303)在android位于android.app.Looper.loop(Looper.java:135)的.os.Handler.dispatchMessage(Handler.java:102)位于java.lang.reflect的android.app.ActivityThread.main(ActivityThread.java:5254) . 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller的java.lang.reflect.Method.invoke(Method.java:372)上的Method.invoke(Native Method) .run(ZygoteInit.java:903)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)引起:java.lang.NullPointerException:尝试调用虚方法'void android.widget.EditText . setText(java.lang.CharSequence)'在com.example.sayandeep.notepad.MainActivity.onCreate(MainActivity.java:38)上的空对象引用,在android.app.Activity.performCreate(Activity.java:5990)在android上位于android.app.A活动中的android.app.ActivityThread.perleLaunchActivity(ActivityThread.java:2278)上的.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106),位于android.app.ActivityThread的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) . 在android.app.Loper.loop上的android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303)访问$ 800(ActivityThread.java:151) Looper.java:135)在java.lang.reflect.Method的java.lang.reflect.Method.invoke(Native Method)的android.app.ActivityThread.main(ActivityThread.java:5254)上.invoke(Method.java:372)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)08 -26 19:04:26.858 10081-10081 / com.example.sayandeep.notepad I / Process:发送信号 . PID:10081 SIG:9

主要活动

package com.example.sayandeep.notepad;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.File;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class MainActivity extends AppCompatActivity {
EditText content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        content=(EditText)findViewById(R.id.content);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view)   {
               Save("Note1.txt");
            }
        });
        content.setText((Open("Note1.txt")));

    }
    public void Save(String filename)  {
        try {
            OutputStreamWriter out = new OutputStreamWriter(openFileOutput(filename, 0));
            out.write(content.getText().toString());
            out.close();
            Toast.makeText(this, "Note saved!", Toast.LENGTH_SHORT).show();
        } catch (Throwable t) {
            Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
        }
    }
    public boolean FileExists(String filename) {
        File file=getBaseContext().getFileStreamPath(filename);
        return file.exists();
    }
    public String Open(String filename)  {
        String temp="";
        if(FileExists(filename))
        {
            try
            {
                InputStream in=openFileInput(filename);
                if(in!=null)
                {
                    InputStreamReader tmp=new InputStreamReader(in);
                    BufferedReader reader=new BufferedReader(tmp);
                    String str;
                    StringBuilder buf=new StringBuilder();
                    while((str=reader.readLine())!=null)
                    {buf.append(str+"\n");}in.close();
                    temp=buf.toString();

                }

            }catch(java.io.FileNotFoundException e){}catch(Throwable t){
                Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show();}

    }return temp;
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.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);
    }

}

#Activity_main.xml#
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.sayandeep.notepad.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_menu_save"
        android:onClick="onClick"/>
</android.support.design.widget.CoordinatorLayout>

#Content_main.xml#

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.sayandeep.notepad.MainActivity"
tools:showIn="@layout/activity_main">
<EditText android:id="@+id/content"
android:layout_width="391dp"
android:layout_height="523dp"
android:hint="Type here..."
android:gravity="top"
android:inputType="textPersonName"
android:layout_centerVertical="true"
android:layout_alignParentStart="true" />

</android.support.constraint.ConstraintLayout>

1 回答

  • 0

    您应该在主布局中包含content_main.xml . 在浮动操作按钮之前将其添加到主布局 . 阅读here

    <include layout="@layout/content_main"/>
    

相关问题